Создать из 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
, выполняются следующие действия:
- Если
flag
равен нулю, то в списокodd
добавляются все символы, которые не являются пробелами, до тех пор, пока не встретится пробел или не закончатся символы в строке. После добавления пробела в списокodd
, значениеflag
устанавливается в единицу. - Если
flag
равен единице, то в списокeven
добавляются все символы, которые не являются пробелами, до тех пор, пока не встретится пробел или не закончатся символы в строке. После добавления пробела в списокeven
, значениеflag
устанавливается в ноль. После завершения работы основного цикла, указательodd
иeven
устанавливаются на нулевые символы в их списках, что позволяет добавить в списокodd
иeven
символы, соответствующие последнему пробелу в исходной строке. Затем, в списокodd
иeven
добавляется нулевой символ, который является маркером конца строки. Наконец, с помощью функцииputs
на экран выводятся спискиodd
иeven
. Списокodd
содержит слова, которые идут нечётными позициями в исходной строке, а списокeven
содержит слова, которые идут чётными позициями в исходной строке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д