Напечатать все слова последовательности, отличные от последнего слова, предварительно преобразовав по правилу - 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; }
Объяснение кода листинга программы
- Объявлены массив строк
words
типаchar*
и переменнаяwordsCount
для подсчета количества заполненных элементов массива. - В цикле
while
считываются символы по одному. - Если считанный символ является запятой или точкой, то это означает конец текущего слова, поэтому его добавляют в массив
words
и обнуляют буферbuffstr
. - В каждой итерации цикла
while
к буферуbuffstr
добавляется очередной считанный символ. - Если считанный символ является точкой, то это означает конец ввода, и цикл прерывается.
- В конце программы выводится каждое слово, которое не является последним, с помощью цикла
for
. - В каждой итерации цикла
for
проверяется, является ли текущее слово последним. - Если текущее слово не является последним, то к нему добавляется
1
и выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д