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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
#define MAX 30
 
int main()
{
    char* words[MAX];
    int wordsCount = 0;
    char buffstr[MAX] = {0};
    char ch[2] = " ";
    while (1)
    {
        ch[0] = getche();
        if (ch[0] == ',' || ch[0] == '.')
        {
            words[wordsCount] = (char*)malloc((strlen(buffstr) + 1)*sizeof(char));
            strcpy(words[wordsCount++], buffstr);
            strcpy(buffstr, "");
        }
        else strcat(buffstr, ch);
        if (ch[0] == '.') break;
    }
    printf("\n");
    for (int i = 0; i < wordsCount - 1; i++)
        if (strcmp(words[i], words[wordsCount - 1]))
        {
            words[i]++;
            printf("%s\n", words[i]);
        }
    return 0;
}

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

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

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


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

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

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