Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <iomanip>
- #include <windows.h>
- using namespace std;
- int main()
- {
- setlocale(LC_ALL, "Russian");
- ifstream fin ("text.txt");
- ofstream fout ("result.txt");
- if (!fin)
- {
- cout << "Файл не может быть открыт!" << endl << endl;
- }
- else
- {
- fin.seekg(0, ios::end);
- long len = fin.tellg();
- char *str1 = new char [len + 1];
- fin.seekg(0, ios::beg);
- fin.read(str1, len);
- str1[len] = '\0';
- int k = 0, i = 0, j = 0; // k - начало нового предложения, i - счетчик циклов, j - счетчик найденных слов
- char *token;
- char deliteli[] = ",.!?\|/<>)(*;:' ";
- const int bukvy = 15;
- char slovo[bukvy];
- const int max = 5000;
- char predlojeniya[max], rezerv[max];
- cout << "Введите искомое слово: ";
- cin >> setw(bukvy) >> slovo;
- OemToCharA (slovo, slovo);
- system("cls");
- cout << "Слово, введенное Вами: " << slovo << endl;
- int n = 0;
- for (i = 0; i < strlen(str1); i++)
- if (str1[i]=='.' || str1[i] == '!' || str1[i] == '?') n++;
- if (n == 0) cout << endl << "Текст в файле вообще не содержит предложений" << endl << endl;
- else
- {
- cout << endl << "Результаты занесены в result.txt" << endl;
- for (i = 0; i < strlen(str1); i++)
- {
- if (str1[i]=='.' || str1[i] == '!' || str1[i] == '?')
- {
- strncpy(predlojeniya, str1+k, i-k+1);
- predlojeniya[i-k+1] = '\0';
- strcpy (rezerv, predlojeniya);
- token = strtok(predlojeniya, deliteli);
- while (token != NULL)
- {
- if (!strcmp(token, slovo)) {fout << rezerv; j++;}
- token = strtok(NULL, deliteli);
- }
- k = i + 1;
- }
- }
- if (j == 0) cout << endl << "К сожалению, текст не содержит предложений со словом <" << slovo << ">" << endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement