2 / 2 / 1
Регистрация: 05.04.2015
Сообщений: 2

Написать программу, которая считывает текст из файла и выводит на экран только предложения, содержащие введенн

03.05.2015, 20:21. Показов 9225. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, которая считывает текст из файла и выводит на экран только предложения, содержащие введенное с клавиатуры слово.

помогите пожалуйста, второй день сижу и бьюсь над такой просто задачей. программирование у меня предмет "для общего ознакомления", так что знания получаем такие себе. вот то что я накалякал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <stdlib.h>
#include <iostream>
#include <fstream>
using namespace std;
int main () {
    setlocale (LC_ALL, "Russian");
    ifstream fin("eto.txt");
    if (!fin) {
        cout << "Файл не может быть открыт!" << endl;
        return 1;
    }
    else {
        fin.seekg(0, ios::end);
        long len = fin.tellg();
        char *buf = new char [len + 1];
        fin.seekg(0, ios::beg);
        fin.read(buf, len);
        buf[len] = '\0';
        long n = 0, i = 0, j = 0;
        char SLOVO[20]; // вводимое слово
        char str[1000]; // массив, в который по плану должны помещаться предложения с искомым словом
        
        cout << "Введи слово - ";
        cin >> SLOVO;
        cout << endl;
 
        while (buf[i]) {
            if (buf[i] == '.' || buf[i] == '?' || buf[i] == '!') {
                for (j = n; j <= i; j++) strcpy(str, buf);
                if (strstr(str, SLOVO) != NULL) 
                    for (j = n; j <=i; j++) 
                        cout << str[j];
                n = i + 1;
            }
            i++;
        }
    }
 
    fin.close();
    cout << endl << endl;
    
    system("pause");
    return 1;
}
прошу подредактировать/сделать задание без использования лишних "новороченных" функций, а использовать только то, что присутствует в коде (по возможности, конечно). ошибка я так понимаю скрыта внутри цикла while. вот ПРОБЛЕМЫ от мЕньших к бОльшим: 1) ищет только англ слова, 2) ищет не слова, набор букв, т. е. если в предложении "I am stupid" искать "tupi", то по идее не должно ничего выводить, но у меня все равно выведет это предложение. 3) выводит ВЕСЬ текст, если нужное слово, а точнее набор букв(см. проблему 2) присутствует в тексте.
P.S. Смотрел много таких же задач на ваших форумах, там везде исп-ся функции, которые я вижу в 1-й раз, к сожалению
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.05.2015, 20:21
Ответы с готовыми решениями:

Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых
Начало уже есть, но что-то не тащит. Помогите пожалуйста... #include &lt;stdio.h&gt; #include &lt;string.h&gt; int main() { FILE...

Написать программу, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых.
Здравствуйте. Прошу помощи в написание программу на C &quot;Написать программу, которая считывает текст из файла и выводит на экран только...

Написать программу,которая считывает текст из файла и выводит на экран только предложения,содержащие введенное с клавиатуры слово.
Написать программу,которая считывает текст из файла и выводит на экран только предложения,содержащие введенное с клавиатуры слово. ...

1
2 / 2 / 1
Регистрация: 05.04.2015
Сообщений: 2
18.05.2015, 18:04  [ТС]
ребят, может кому- то понадобится, вот, сам сделал, преподаватель поставил максимум
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <iostream>
#include <fstream>
#include <iomanip>
#include <windows.h>
using namespace std;
int main() 
{
    setlocale(LC_ALL, "Russian");
    // обработка текста
    ifstream fin ("D:\\Папка с текстом\\eto.txt", ios::in); // поместите папку с текстовым файловым на лок диск D
    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 = 10000;
        char predlojeniya[max], rezerv[max];
 
        
        cout << "Здравствуйте, Вы находитесь в программе, которая ищет в установленном текстовом файле предложения c введенным Вами словом.\n\nВведите искомое слово: ";
        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 << "Предложения с введенным Вами словом:" << endl;
            cout << "--------------------------------------------------------------------------------";
            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);           // функция strtok вычленяет токены, разделяемые любым из символов ",.!?\|/<>)(*;:' ",
                    token = strtok(predlojeniya, deliteli);  // из исходной строки (при этом разрушая ее!!!). Поэтому я сделал её дубликат (rezerv)
                    while (token != NULL)
                    {
                        if (!strcmp(token, slovo)) {cout << rezerv; j++;}
                        token = strtok(NULL, deliteli);
                    }
                    k = i + 1;
                }
            } 
 
            if (j == 0) cout << endl << "К сожалению, текст не содержит предложений со словом <" << slovo << ">" << endl;
            cout << endl <<  "--------------------------------------------------------------------------------" << endl;
        }
    }
 
    system("pause");
    return 1;
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2015, 18:04
Помогаю со студенческими работами здесь

Написать программу которая считывает текст из файла и выводит на экран только предложения содержащее введенное
Написать программу которая считывает текст из файла и выводит на экран только предложения содержащее введенное с клавиатуры слово. Из...

Написать программу, которая считывает текст из файла и выводит на экран только строки, содержащие двузначные числа.
Помогите пожалуйста, получил от преподавателя задание на дом (болею), нужно сделать. Сам с файлами и строками сталкиваюсь впервые, поэтому...

Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел
Написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел.

Нужно написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных чисел
Здравствуйте! Нужно написать программу, которая считывает текст из файла и выводит на экран только строки, не содержащие двузначных...

Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух значных чисел
Помогите Решить! Вот Условие:Написать программу,которая считывает текст из файла и выводит на экран только строки,не содержащие двух...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Оптимизация производительности Express.js бэкенда
Reangularity 23.05.2025
Express. js заслуженно остаётся одним из самых популярных инструментов для создания бэкенда, но даже он не застрахован от проблем с производительностью. Многие разработчики сталкиваются с ситуацией,. . .
Продвинутая обработка данных с LINQ в C#
stackOverflow 23.05.2025
LINQ (Language Integrated Query) — это фундаментальное изменение парадигмы работы с данными в C#. Простые запросы Where и Select знакомы любому разработчику, но настоящая мощь LINQ раскрывается в. . .
Инфраструктура PKI и сертификатов безопасности
Mr. Docker 23.05.2025
PKI (Public Key Infrastructure) — это невидимый фундамент цифрового доверия, без которого современный интернет просто рассыпался бы как карточный домик. За этой аббревиатурой скрывается целый. . .
Аутентификация OAuth в Python
py-thonny 22.05.2025
OAuth (Open Authorization) — это целый стандарт для делегированного доступа. Звучит занудно? Давайте проще: OAuth позволяет приложениям получать доступ к информации пользователя на сторонних сервисах. . .
Хеширование и соль паролей в веб-приложениях C#
stackOverflow 22.05.2025
Когда-то в начале своей карьеры я тоже грешил простейшими подходами к хранению паролей – MD5-хеширование казалось верхом защиты. Но технологии не стоят на месте, вычислительные мощьности растут, и. . .
Генераторы Python для эффективной обработки данных
AI_Generated 21.05.2025
В Python существует инструмент настолько мощный и в то же время недооценённый, что я часто сравниваю его с тайным оружием в арсенале программиста. Речь идёт о генераторах — одной из самых элегантных. . .
Чем заменить Swagger в .NET WebAPI
stackOverflow 21.05.2025
Если вы создавали Web API на . NET в последние несколько лет, то наверняка сталкивались с зелёным интерфейсом Swagger UI. Этот инструмент стал практически стандартом для документирования и. . .
Использование Linq2Db в проектах C# .NET
UnmanagedCoder 21.05.2025
Среди множества претендентов на корону "идеального ORM" особое место занимает Linq2Db — микро-ORM, балансирующий между мощью полноценных инструментов и легковесностью ручного написания SQL. Что. . .
Реализация Domain-Driven Design с Java
Javaican 20.05.2025
DDD — это настоящий спасательный круг для проектов со сложной бизнес-логикой. Подход, предложенный Эриком Эвансом, позволяет создавать элегантные решения, которые точно отражают реальную предметную. . .
Возможности и нововведения C# 14
stackOverflow 20.05.2025
Выход версии C# 14, который ожидается вместе с . NET 10, приносит ряд интересных нововведений, действительно упрощающих жизнь разработчиков. Вы уже хотите опробовать эти новшества? Не проблема! Просто. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru