Определить, есть ли в строке слова, которые совпадают с последним - C (СИ)
Формулировка задачи:
В заданной строке слова разделены пробелом. Определить, есть ли в ней слова, которые совпадают с последним
P.S. Нужно определить если ли в строке слова, которые совпадают с последним и просто вывести текст "есть совпадения" или "совпадений нету" - что то такое.
Заранее БОЛЬШОЕ спасибо!
апп темку...
помогите плиз ...
Решение задачи: «Определить, есть ли в строке слова, которые совпадают с последним»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
char * last_word_meetings(char * str, const char * delim, int * counter) {
if ( str = strtok(str, delim) ) {
char * last = last_word_meetings(NULL, delim, counter);
if ( ! last )
return str;
*counter += ( strcmp(str, last) == 0 );
return last;
}
else
return NULL;
}
#define DELIM " \t\n"
int main(void) {
char buf[BUFSIZ];
while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) {
int meetings = 0;
char * last = last_word_meetings(buf, DELIM, &meetings);
if ( meetings )
printf("Last word (%s) meets %d times before.\n", last, meetings);
else
printf("%s - only last word in the string.\n", last);
}
return 0;
}
Объяснение кода листинга программы
- В функции
last_word_meetingsиспользуется функцияstrtokдля разделения строки на слова. - Если первое слово не равно последнему, то функция вызывается рекурсивно для оставшейся части строки.
- Если последнее слово не найдено, то возвращается первое слово.
- Если последнее слово найдено, то увеличивается счетчик
*counter, и функция вызывается рекурсивно для оставшейся части строки. - В конце функции возвращается последнее найденное слово.
- В функции
mainсчитывается строка с помощьюfgets. - С помощью функции
last_word_meetingsопределяется, встречается ли последнее слово в строке, и если да, то сколько раз. - Если последнее слово встречается, то выводится сообщение о том, что оно встречается
meetingsраз. - Если последнее слово не встречается, то выводится сообщение о том, что оно является единственным в строке.
- Цикл продолжается до тех пор, пока пользователь не введет пустую строку.