Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 20.12.2018
Сообщений: 6

Найти в файле предложения, содержащие заданное количество слов

20.12.2018, 22:00. Показов 1661. Ответов 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
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
79
80
81
#include <string.h>
#include <stdio.h>
#include <conio.h>
#include "locale.h"
#include "windows.h"
int as=0;
 
int IsnWordsInSentence(char * sentence, int nWords);
 
int main()
{
     setlocale( LC_ALL,"Russian" ); 
         int nWords;
     FILE * fin = fopen("text.txt","rb+");
     if (!fin) 
         {
                 printf("Файл не найден.\n");
         getch();
         return 0;
         }
         printf("Введите количество слов : ");
         scanf("%d",&nWords);
 
         fseek(fin,0,SEEK_END);
         long sLen = ftell(fin);
         fseek(fin,0,SEEK_SET);
     char * buf = (char *)malloc(sizeof(char)*(sLen + 1));
         if(!buf)
         {
                 printf("Ошибка распределения памяти\n");
                 getch();
         return 1;
         }
 
         fread(buf,sLen,1,fin);
         buf[sLen] = '\0';
         char * sentence = strtok(buf,".!?");
 while (sentence)
 
     {
                    
                 if (IsnWordsInSentence(sentence,nWords) == 0)
                 {
                        printf("%s \r\n",sentence);
                        as++;
                 }
                 sentence = strtok(NULL,".!?");
                 system("pause");
                 
                
 }
 if (as==0)
      printf("Предложений с таким количеством слов нет\n");
                  getch(); 
                 return 0;
 
}
 
int IsnWordsInSentence(char * sentence, int nWords) // что делает эта функция?
{
        long i, sLen = strlen(sentence);
        char * str = (char *)malloc((sLen + 1)*sizeof(char)); // непонятность
        sprintf(str,"%s",sentence);
        str[sLen] = '\0';
        char buf[32];
        while(*str) // непонятность
        {
                i = 0;
                while((str += i) != NULL) // здесь и далее
                if((str + i)[0] == ' ' || (str + i)[0] == ',') 
                        i++;
                else
                        break;
 
                sscanf(str,"%s",buf);
                nWords--;
                str += strlen(buf);
 
        }
        return nWords;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2018, 22:00
Ответы с готовыми решениями:

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

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

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

1
 Аватар для weterok
36 / 28 / 9
Регистрация: 11.11.2018
Сообщений: 163
22.12.2018, 11:28
Лучший ответ Сообщение было отмечено wolwerr как решение

Решение

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

Добавлено через 6 минут
Цитата Сообщение от wolwerr Посмотреть сообщение
while(*str) // непонятность
вот здесь если строка принимает вид "" то *str == '\0' == 0 и происходит выход из цикла

Добавлено через 7 минут
Цитата Сообщение от wolwerr Посмотреть сообщение
sentence = strtok(NULL,".!?");
вот эта строчка извлекает следующее предложение

Добавлено через 1 минуту
Цитата Сообщение от wolwerr Посмотреть сообщение
int IsnWordsInSentence(char * sentence, int nWords) // что делает эта функция
Эта функция ищет предложение, в котором количество слов равно заданному и возвращает 0 если найдено

Добавлено через 3 минуты
Цитата Сообщение от wolwerr Посмотреть сообщение
char * str = (char *)malloc((sLen + 1)*sizeof(char)); // непонятность
тут выделение памяти в указатель str размером в предложение sentence
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.12.2018, 11:28
Помогаю со студенческими работами здесь

Найти все слова содержащие заданное количество букв
Данн массив из слов Т(к) найти все слова содержащие заданное количество букв

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

С клавиатуры вводится заданное количество слов. Найти все пары слов, одно из которых оканчивается на то же сочетание
С клавиатуры вводится заданное количество слов. Найти все пары слов, одно из которых оканчивается на то же сочетание букв, на которое...

В массиве строк найти все слова, содержащие заданное количество гласных букв
Добрый вечер! Прошу пожалуйста помочь/подсказать В программе нужно ввести количество строк(но не больше 6) Максимальное число...

Строка: Вывести на экран все предложения, содержащие заданное слово w.
Само задание: С клавиатуры вводится строка символов, представляющая собой некоторый отрывок литературного произведения, а также слово w....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник 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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru