Создать из 1 списка слов - два - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано предложение, слова в котором разделены пробелами. Составить из него два предложения по правилу: на первое переписать все четные по порядку слова, а во второй - нечетные. Пожалуйста, выручите, могу посчитать количество слов, а вот это задание мозг выедает)

Решение задачи: «Создать из 1 списка слов - два»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define N 256
int main()
{
    char str[] = "Coming onto you The hell you got me through What would I have to do to kiss that frown"
                 " I know whats wrong with you That fucked up part of you Is gonna bury me under ground";
    char buf1[N], buf2[N], *odd, *even, *start;
    int flag = 0;
    start = str;
    odd = buf1;
    even = buf2;
    while(*start){
         if(!flag){
            while(*start != ' ' && *start)
                *odd++ = *start++;
            if(*start){
                *odd++ = ' ';
                start++;
                flag = 1;
            }
         }
         else{
             while(*start != ' ' && *start)
                *even++ = *start++;
            if(*start){
                *even++ = ' ';
                start++;
                flag = 0;
            }
         }
    }
    *odd = '\0';
    *even = '\0';
    puts(buf1);
    puts(buf2);
    return 0;
}

Объяснение кода листинга программы

В этом коде на языке C создаются два списка слов из одного исходного списка. Список слов представлен в виде строки str. Для удобства работы со строкой, указатель на начало строки start и указатели на текущие позиции в списках odd и even инициализируются значениями start. Переменная flag инициализируется нулём и используется для переключения между списками. В основном цикле программы, пока есть символы в строке str, выполняются следующие действия:

  1. Если flag равен нулю, то в список odd добавляются все символы, которые не являются пробелами, до тех пор, пока не встретится пробел или не закончатся символы в строке. После добавления пробела в список odd, значение flag устанавливается в единицу.
  2. Если flag равен единице, то в список even добавляются все символы, которые не являются пробелами, до тех пор, пока не встретится пробел или не закончатся символы в строке. После добавления пробела в список even, значение flag устанавливается в ноль. После завершения работы основного цикла, указатель odd и even устанавливаются на нулевые символы в их списках, что позволяет добавить в список odd и even символы, соответствующие последнему пробелу в исходной строке. Затем, в список odd и even добавляется нулевой символ, который является маркером конца строки. Наконец, с помощью функции puts на экран выводятся списки odd и even. Список odd содержит слова, которые идут нечётными позициями в исходной строке, а список even содержит слова, которые идут чётными позициями в исходной строке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы