Определить, есть ли в строке слова, которые совпадают с последним - 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;
}

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

  1. В функции last_word_meetings используется функция strtok для разделения строки на слова.
  2. Если первое слово не равно последнему, то функция вызывается рекурсивно для оставшейся части строки.
  3. Если последнее слово не найдено, то возвращается первое слово.
  4. Если последнее слово найдено, то увеличивается счетчик *counter, и функция вызывается рекурсивно для оставшейся части строки.
  5. В конце функции возвращается последнее найденное слово.
  6. В функции main считывается строка с помощью fgets.
  7. С помощью функции last_word_meetings определяется, встречается ли последнее слово в строке, и если да, то сколько раз.
  8. Если последнее слово встречается, то выводится сообщение о том, что оно встречается meetings раз.
  9. Если последнее слово не встречается, то выводится сообщение о том, что оно является единственным в строке.
  10. Цикл продолжается до тех пор, пока пользователь не введет пустую строку.

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

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