Прекращение ввода текста. - C (СИ)
Формулировка задачи:
Ввести текст с клавиатуры, число строк которого не превышает 16, а также массив символов-разделителей. Ввод текста прекращается, если две последние строки имеют одинаковую длину и заканчиваются на одно слово.
Получил вот такое задание, но никак не могу понять как это реализовать.
Думаю использовать двухмерные массив char, но как разбить на слова и сравнивать их никак не возьму в толк. Получается массив строк, где строки сами массивы слов?
Помогите пожалуйста, если не в тягость.
Решение задачи: «Прекращение ввода текста.»
textual
Листинг программы
int main(void) { int i=0,lg[16],j=0,i2=0; char txt[MAXSTR][MAXLINE],sep[6],s[MAXSTR][MAXLINE]; char *word; puts("Enter array of separators: \n"); scanf("%s",sep); puts("Enter text: \n"); while(i<MAXSTR) { scanf("%s",txt[i]); i2=0; j=strlen(txt[i]); while(j>0) { s[i][i2]=txt[i][j-1]; i2=i2+1; j=j-1; } s[i][i2]='\0'; if (strlen(txt[i])==strlen(txt[i-1])) { if (strcmp(strtok(s[i],sep),strtok(s[i-1],sep))==0) {break;} } i=i+1; }; getch(); return 0; }
Объяснение кода листинга программы
- Объявлены следующие переменные:
- i = 0 (указатель на текущий символ в тексте)
- lg = 16 (массив для хранения длины слов)
- j = 0 (указатель на текущее слово в тексте)
- i2 = 0 (вспомогательный указатель для обработки текущего слова)
- txt = MAXSTR x MAXLINE (массив для хранения текста)
- sep = 6 (массив для хранения разделителей)
- s = MAXSTR x MAXLINE (массив для хранения обработанного текста)
- word = (указатель на текущее слово в тексте)
- Пользователю предлагается ввести массив разделителей.
- Пользователю предлагается ввести текст.
- Пока есть символы в тексте, выполняется следующий цикл:
- Считывается текущее слово из текста.
- Инициализируется вспомогательный указатель i2 для обработки текущего слова.
- Считывается длина текущего слова.
- Пока есть символы в текущем слове, выполняется следующий цикл:
- В массиве s[i] записывается текущий символ.
- Вспомогательный указатель i2 увеличивается на 1.
- Длина текущего слова уменьшается на 1.
- Если длина текущего слова равна длине предыдущего слова и слова совпадают, то цикл прерывается.
- Указатель i увеличивается на 1.
- Выводится сообщение об успешном завершении ввода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д