Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 15.10.2011
Сообщений: 20

Найти слова, встречающиеся в каждом предложении текста. Работа с файлом опять)

09.10.2013, 10:38. Показов 1259. Ответов 4
Метки нет (Все метки)

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

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

В общем если в файле написано:
"мама мыла раму. окна мама тоже моет. мама устала", То слово "мама" программа находит.

НО! если написано: "мыла раму мама. окна мама тоже моет. мама устала" то уже нет.
То есть после первого слова, поиск второго не осуществляет(((

вот код: Весь текст записано в строке S
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
 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;           // предположим что текущего слова из ПЕРВОГО предложения НЕТ в остальных предложениях
            char d[LEN];
            strcpy(d, a[i]);  //ВОТ ТУТ ГДЕ ТО ОШИБКА ПО МОЕМУ ПРЕДПОЛОЖЕНИЮ
            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)
        {
            cout << tmp << "\t";
            yn = true;
            //cout << "\n\nSlovo '" << tmp << "' vstrechaetsya v kazdom predlozenii!";
        }
        p = strtok(NULL, " ");
        if(p)
            strcpy(tmp, p);
    }
    if(!yn)
        cout << "\n\nSlova vstreshusegosya vo vseh predlozeniyh NE obnaruzeno";
 
    if(p != NULL)
        delete []p;
Возможно можно использовать спец функции, но я не знаю какие и как ими пользоваться. Исходник текста взяла отсюда, но видимо он тоже неправильный((
Если кто знает, как реализовать, то буду очень благодарна.

Добавлено через 13 часов 53 минуты
Неужели никто не знает? Помогите пожалуйста, очень нужно, программа то ведь почти готова и и где ошибка есть, я тоже нашла... просто не знаю как исправить(((
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2013, 10:38
Ответы с готовыми решениями:

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

Дан текст. Найти слово встречающееся в каждом предложении или сообщить что такого слова нет
Дан текст. Найти слово встречающееся в каждом предложении или сообщить что такого слова нет. Помогите сделать такую программу. Ничего...

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

4
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 113
09.10.2013, 11:59
Судя во всему что я понял, вам нужно каждое слово в каждом предложении занести в массив.
Второе, надо сравнить взятый отдельный элемент массива, с элементами другого массива на предмет совпадения. У вас такой проверки нету.
0
1 / 1 / 0
Регистрация: 15.10.2011
Сообщений: 20
09.10.2013, 12:09  [ТС]
Проверка то есть, просто работает косячно(( Я думаю что можно сделать проще, с помощью специальных функций из stl, но я их не знаю, увы(((( По сути программа то не сложная, просто я с++ и его функции не знаю((
0
18 / 1 / 0
Регистрация: 26.09.2013
Сообщений: 59
09.10.2013, 12:13
дак это и не С++, это С
0
9 / 9 / 0
Регистрация: 19.10.2011
Сообщений: 113
09.10.2013, 12:59
Цитата Сообщение от Lara1 Посмотреть сообщение
Проверка то есть, просто работает косячно(( Я думаю что можно сделать проще, с помощью специальных функций из stl, но я их не знаю, увы(((( По сути программа то не сложная, просто я с++ и его функции не знаю((
Там проверка совсем не та, что нужна, проверяет она 1 элемент массива предложения 1, с предложение 2, и вся проверка на этом заканчивается. 3-е предложение даже в проверке не участвует если во втором не чего не найдено.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.10.2013, 12:59
Помогаю со студенческими работами здесь

Найти слова в txt встречающиеся в каждом предложении или сообщить, что таких слов нет
Дан файл, содержащий текст на русском языке. Найти слова, встречающиеся в каждом предложении, или сообщить, что таких слов нет. (В консоле)...

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

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

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

Поменять местами 2 произвольных слова в каждом предложении текста
Поменять местами 2 произвольных слова в каждом предложении текста! Помогите сделать задачу , у меня работает только для 1 предложения...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru