Написать программу по этой задаче: Дан текст. Найти слово, встречающееся в каждом из предложений или сообщить, что такого слова нет. Естественно, за вознаграждение.
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #include <memory.h> #include <stdbool.h> #include <conio.h> #include <string.h> int main() { const int LEN = 1000; char s[LEN]; char a[LEN / 10][LEN]; // в каждой строке хранится соот-щее предложение char d[LEN]; printf("Vvedite text dlya analiza. Predlozeniya razdelyate tochkami: \n"); strcpy(s, "Hekko qw. qw fd. qw dfdfdf."); printf("\n\n%s\n\n", s); fflush(stdin); int n = -1; // общее количество предложений в строке char *p = strtok(s, "."); // разделитель между лексемой "точка", т е высекаем предложения if(p) // чтобы убедиться, что во входном тексте имеется хотя бы ОДНО предложение { n++; strcpy(a[n], p); } do { p = strtok(NULL, "."); if(p) { n++; strcpy(a[n], p); } } while(p); // поскольку нужно найти слова в каждое предложении, поступим очень просто. Разобъем ПЕРВОЕ предложение на слова и проверим // каждое слово с каждым словом в других предложениях. Если текущее слово не встретиться в остальных предложениях, значит оно // не подходит и переходим к следующему слову p = strtok(a[0], " "); // указываем, что разделитель между словами ПРОБЕЛ (a[0] - первое предложение во входном тексте) bool b, glob; // будет равна char tmp[LEN], tmp1[LEN]; char *p1; bool yn = false; if(p) strcpy(tmp, p); while(p) { // пробегаем по всему массиву предложений кроме первого for(int i = 1; i <= n; i++) { glob = true; b = false; // предположим что текущего слова из ПЕРВОГО предложения НЕТ в остальных предложениях // p1 = strtok(a, " "); strcpy(d, a); p1 = strtok(d, " "); if(p1) { strcpy(tmp1, p1); if(strcmp(tmp, tmp1) == 0) b = true; } while(p1) { p1 = strtok(NULL, " "); if(p1) { strcpy(tmp1, p1); if(strcmp(tmp1, tmp) == 0) b = true; } } if(b == false) { glob = false; break; // нет смысла проверять в других предложениях, т к в i - ом анализируемого слова не обнаружено } } if(glob) { printf("%s\t", tmp); yn = true; } p = strtok(NULL, " "); if(p) strcpy(tmp, p); } if(!yn){ printf("\n\nSlova vstreshusegosya vo vseh predlozeniyh NE obnaruzeno"); } // cout << "\n\nSlova vstreshusegosya vo vseh predlozeniyh NE obnaruzeno"; if(p != NULL) free(p); //delete []p; getch(); return 0; }