Считать список, парные слова вывести в одну строку, а непарные в другую - C (СИ)

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

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

Помогите пожалуйста, написал такой вот код, нужно считать список, и парные слова вывести в одной строке, а непарные в другой. Программа после запуска сразу же вылетает, уже не знаю что делать. Пишу на С.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 256
  4. int main()
  5. {
  6. char str[255], buf1[N], buf2[N], *odd, *even, *start;
  7. int flag = 0;
  8. printf("vvedite");
  9. scanf("%s", str);
  10. start = str;
  11. odd = buf1;
  12. even = buf2;
  13. while (*start)
  14. {
  15. if (!flag)
  16. {
  17. while (*start != ' ' && *start)
  18. *odd++ = *start++;
  19. if (*start)
  20. {
  21. *odd++ = ' ';
  22. start++;
  23. flag = 1;
  24. }
  25. }
  26. else
  27. {
  28. while (*start != ' ' && *start)
  29. *even++ = *start++;
  30. if (*start)
  31. {
  32. *even++ = ' ';
  33. start++;
  34. flag = 0;
  35. }
  36. }
  37. }
  38. *odd = '\0';
  39. *even = '\0';
  40. puts(buf1);
  41. puts(buf2);
  42. //printf(buf1);
  43. //printf(buf2);
  44. return 0;
  45. }

Решение задачи: «Считать список, парные слова вывести в одну строку, а непарные в другую»

textual
Листинг программы
  1. #include <stdio.h>
  2. #define N 256
  3. int main()
  4. {
  5.     char str[N], buf1[N],buf2[N];
  6.     int i,j1=0,j2=0;
  7.     gets(str);
  8.     for(i=0;str[i];i++)
  9.        if(str[i]%2)
  10.           buf1[j1++]=str[i];
  11.        else
  12.           buf2[j2++]=str[i];
  13.    buf1[j1]=0;
  14.    buf2[j2]=0;
  15.    puts(buf1);
  16.    puts(buf2);
  17.    return 0;
  18. }

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

  1. Подключение стандартной библиотеки для работы с консолью (stdio.h).
  2. Установка константы N равной 256.
  3. Объявление трех массивов типа char: str, buf1, buf2 размером N.
  4. Объявление трех переменных типа int: i, j1, j2, которые будут использоваться в цикле.
  5. Считывание строки с помощью функции gets в массив str.
  6. Начальные значения j1 и j2 устанавливаются равными нулю.
  7. В цикле происходит проверка каждого символа строки str. Если символ нечетный, он добавляется в buf1, иначе в buf2.
  8. После прохода цикла, в buf1 и buf2 остаются только парные символы, которые выводятся на экран с помощью функции puts.
  9. Значения j1 и j2 сбрасываются в ноль.
  10. Вывод на экран массива buf2, содержащего нечетные символы.
  11. Выход из программы с возвращаемым значением 0.

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


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

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

6   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы