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

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

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

последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 строчных русских букв; между соседними словами - запятая, за последним словом - точка. Напечатать все слова последовательности, которые отличны от последнего слова, предварительно преобразовав каждое из них по следующему правилу: удалить из слова первую букву.

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. #define MAX 30
  7.  
  8. int main()
  9. {
  10.     char* words[MAX];
  11.     int wordsCount = 0;
  12.     char buffstr[MAX] = {0};
  13.     char ch[2] = " ";
  14.     while (1)
  15.     {
  16.         ch[0] = getche();
  17.         if (ch[0] == ',' || ch[0] == '.')
  18.         {
  19.             words[wordsCount] = (char*)malloc((strlen(buffstr) + 1)*sizeof(char));
  20.             strcpy(words[wordsCount++], buffstr);
  21.             strcpy(buffstr, "");
  22.         }
  23.         else strcat(buffstr, ch);
  24.         if (ch[0] == '.') break;
  25.     }
  26.     printf("\n");
  27.     for (int i = 0; i < wordsCount - 1; i++)
  28.         if (strcmp(words[i], words[wordsCount - 1]))
  29.         {
  30.             words[i]++;
  31.             printf("%s\n", words[i]);
  32.         }
  33.     return 0;
  34. }

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

  1. Объявлены массив строк words типа char* и переменная wordsCount для подсчета количества заполненных элементов массива.
  2. В цикле while считываются символы по одному.
  3. Если считанный символ является запятой или точкой, то это означает конец текущего слова, поэтому его добавляют в массив words и обнуляют буфер buffstr.
  4. В каждой итерации цикла while к буферу buffstr добавляется очередной считанный символ.
  5. Если считанный символ является точкой, то это означает конец ввода, и цикл прерывается.
  6. В конце программы выводится каждое слово, которое не является последним, с помощью цикла for.
  7. В каждой итерации цикла for проверяется, является ли текущее слово последним.
  8. Если текущее слово не является последним, то к нему добавляется 1 и выводится на экран.

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


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

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

12   голосов , оценка 3.917 из 5

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

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

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