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

Вывод предложений, состоящих из заданного количества слов

04.05.2012, 23:30. Показов 2528. Ответов 17
Метки нет (Все метки)

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

Код вроде правильный, по идее должен работать, но не пойму в ем ошибка =( То выводит текст( правда весь и без точек), то просто даже не переходит на вывод.
Помогите пожалуйста ^^
Очень срочно надо(
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
    
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
 void main()
  {clrscr();
   FILE *f;
   int kols[100] , ei,j,o,k,m,n,i,ie,d[100], g, l;
       char  t, s[100],s1[100], b[100];
    do {
  clrscr();
  cout<<" MENU\n";
  cout<<"1>Записать данные в файл !\n";
  cout<<"2>Выполнить чтение из файла и выполнить программу\n";
  cout<<"3>Exit\n";
    cin>>n;
   switch(n) {
 
      case 1:  {
 
      clrscr();
      cout<<"Вводите текст \n";
      gets(s);
 
  if ((f=fopen("sprats.txt","w"))==NULL)
  {puts ("Немогу открыть файл !\n"); return;}
 
  fwrite(s,strlen(s)+1,1,f);
 
  fclose(f);
 
  puts("\nФайл записан !"); getch();  break; }
   case 2: {
   cout<<"Vvedire kol slov " ;
   cin>>ie;
   clrscr();
  cout<<" \n";
  cout<<"\n";
  cout<<"sprats.txt: ";
  if ((f=fopen("sprats.txt","r"))==NULL)
  { puts("\n Немогу открыть файл !\n"); return;}
   fread(s,strlen(s)+1,1,f);
   cout<<s;
   getch();
   cout<<endl;
    k=0;
   d[0]=0;
   ei=0;
    l=0;
    for(i=0;i<=strlen(s);i++)
       if (s[i]=='.') { d[ei]=i; ei++; l++; b[l]='.';}
       else {b[l]=s[i]; l++;};
       for (i=0; i<=ei; i++)
       { g=d[i];
     for (l=0; l<g; l++)
     if(b[l]==' ') k++;
    if (k==ie) {for (l=0; l<g; l++) cout<<b[l];} }
      
   getch();
 
   break; }
 
}
}
while (n!=3);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2012, 23:30
Ответы с готовыми решениями:

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

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

Подсчитать количество слов, состоящих из заданного количества букв
Подсчитать количество слов, состоящих из заданного количества букв.var s,w:string; i,n,k:byte; begin writeln('Введите строку: ');...

17
139 / 60 / 13
Регистрация: 04.09.2011
Сообщений: 1,956
Записей в блоге: 1
05.05.2012, 07:59
Что именно не работает ?
0
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 09:03  [ТС]
Добавлено через 1 минуту
Цитата Сообщение от Sylar9 Посмотреть сообщение
Что именно не работает ?
Проблемы с этой частью, а точнее после строчки for (l=0; l<g; l++)

C++
1
2
3
4
5
6
7
8
for(i=0;i<=strlen(s);i++)
       if (s[i]=='.') { d[ei]=i; ei++; l++; b[l]='.';}
       else {b[l]=s[i]; l++;};
       for (i=0; i<=ei; i++)
       { g=d[i];
     for (l=0; l<g; l++)
     if(b[l]==' ') k++;
    if (k==ie) {for (l=0; l<g; l++) cout<<b[l];} }
0
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 09:16
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
#include <string.h>
 
#include <iostream>
#include <fstream>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const char* filename = "input.txt";
    
    static char text[2048] = "\0";
    ifstream ifs(filename, ifstream::in);
    ifs.read(text, 2048);
 
    printf("%s\n",text);
 
    int nwords = 0;
    cout << "Enter the number of words: "; cin>>nwords;
 
    char pbuf[256] = "\0";
    int count = 0; int n = 0;
    for (int i = 0; text[i] != '\0'; i++)
        if (text[i] == '.')
        {
            if (nwords == count)
                printf("\"%s\" count = %d\n",pbuf,count);
            pbuf[n] = '\0'; n = 0; count = n;
        }
 
        else { 
            pbuf[n] = text[i]; 
            if (isspace(pbuf[n++])) count++; 
        }
 
    return 0;
}
input.txt:
C++ is the standard programming language for developing cross-platform applications. It's predicessor
ANSI C is the most common programming language for development. It doesn't cause sufficient code redunancy,
when developing applications.
0
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 09:39  [ТС]
Цитата Сообщение от zitxbit Посмотреть сообщение
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
#include <string.h>
 
#include <iostream.h>
#include <fstream.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const char* filename = "input.txt";
    
    static char text[2048] = "\0";
    ifstream ifs(filename, ifstream::in);
    ifs.read(text, 2048);
 
    printf("%s\n",text);
 
    int nwords = 0;
    cout << "Enter the number of words: "; cin>>nwords;
 
    char pbuf[256] = "\0";
    int count = 0; int n = 0;
    for (int i = 0; text[i] != '\0'; i++)
        if (text[i] == '.')
        {
            if (nwords == count)
                printf("\"%s\" count = %d\n",pbuf,count);
            pbuf[n] = '\0'; n = 0; count = n;
        }
 
        else { 
            pbuf[n] = text[i]; 
            if (isspace(pbuf[n++])) count++; 
        }
 
    return 0;
}
input.txt:
C++ is the standard programming language for developing cross-platform applications. It's predicessor
ANSI C is the most common programming language for development. It doesn't cause sufficient code redunancy,
when developing applications.
Выдает ошибку на строке using namespace std;
Я просто не встречалась с таким программным кодом(
0
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 09:57
А какой у вас компилятор?
0
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 09:59  [ТС]
Цитата Сообщение от zitxbit Посмотреть сообщение
А какой у вас компилятор?
Borland C++ for DOS
0
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:00
Не подходит. Нужен хотя-бы Bloodshed Dev-C++ for Windows
0
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:03  [ТС]
Цитата Сообщение от zitxbit Посмотреть сообщение
Не подходит. Нужен хотя-бы Bloodshed Dev-C++ for Windows
К сожалению требуют чтобы практика была написана именно на нем(
А только так можно решить эту задачу? На этом компиляторе не получится?(
0
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:03
C++
1
Для Borland C++ 3.11 for DOS:
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
#include <stdio.h>
#include <string.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const char* filename = "input.txt";
 
    FILE* fp = NULL;
    if ((fp = fopen(filename,"r") == NULL)
       printf("Unable to open file %s\n",filename);
 
    static char text[2048] = "\0";
    fread (text,1,2048,fp);
 
    printf("%s\n",text);
 
    int nwords = 0;
    cout << "Enter the number of words: "; cin>>nwords;
 
    char pbuf[256] = "\0";
    int count = 0; int n = 0;
    for (int i = 0; text[i] != '\0'; i++)
        if (text[i] == '.')
        {
            if (nwords == count)
                printf("\"%s\" count = %d\n",pbuf,count);
            pbuf[n] = '\0'; n = 0; count = n;
        }
 
        else { 
            pbuf[n] = text[i]; 
            if (isspace(pbuf[n++])) count++; 
        }
 
    fclose(fp);
 
    return 0;
}
0
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:07  [ТС]
Цитата Сообщение от zitxbit Посмотреть сообщение
C++
1
Для Borland C++ 3.11 for DOS:
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
#include <stdio.h>
#include <string.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const char* filename = "input.txt";
 
    FILE* fp = NULL;
    if ((fp = fopen(filename,"r") == NULL)
       printf("Unable to open file %s\n",filename);
 
    static char text[2048] = "\0";
    fread (text,1,2048,fp);
 
    printf("%s\n",text);
 
    int nwords = 0;
    cout << "Enter the number of words: "; cin>>nwords;
 
    char pbuf[256] = "\0";
    int count = 0; int n = 0;
    for (int i = 0; text[i] != '\0'; i++)
        if (text[i] == '.')
        {
            if (nwords == count)
                printf("\"%s\" count = %d\n",pbuf,count);
            pbuf[n] = '\0'; n = 0; count = n;
        }
 
        else { 
            pbuf[n] = text[i]; 
            if (isspace(pbuf[n++])) count++; 
        }
 
    fclose(fp);
 
    return 0;
}
using namespace std; опять ему эта строчка не нравится( еще требует скобку, ставлю, все равно не нравится, в этой строчке int _tmain(int argc, _TCHAR* argv[])
0
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:09
Извините, забыл удалить:
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
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    const char* filename = "input.txt";
 
    FILE* fp = NULL;
    if ((fp = fopen(filename,"r") == NULL)
       printf("Unable to open file %s\n",filename);
 
    static char text[2048] = "\0";
    fread (text,1,2048,fp);
 
    printf("%s\n",text);
 
    int nwords = 0;
    cout << "Enter the number of words: "; cin>>nwords;
 
    char pbuf[256] = "\0";
    int count = 0; int n = 0;
    for (int i = 0; text[i] != '\0'; i++)
        if (text[i] == '.')
        {
            if (nwords == count)
                printf("\"%s\" count = %d\n",pbuf,count);
            pbuf[n] = '\0'; n = 0; count = n;
        }
 
        else { 
            pbuf[n] = text[i]; 
            if (isspace(pbuf[n++])) count++; 
        }
 
    fclose(fp);
 
    return 0;
}
0
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:20  [ТС]
Цитата Сообщение от zitxbit Посмотреть сообщение
Извините, забыл удалить:
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
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    const char* filename = "input.txt";
 
    FILE* fp = NULL;
    if ((fp = fopen(filename,"r") == NULL)
       printf("Unable to open file %s\n",filename);
 
    static char text[2048] = "\0";
    fread (text,1,2048,fp);
 
    printf("%s\n",text);
 
    int nwords = 0;
    cout << "Enter the number of words: "; cin>>nwords;
 
    char pbuf[256] = "\0";
    int count = 0; int n = 0;
    for (int i = 0; text[i] != '\0'; i++)
        if (text[i] == '.')
        {
            if (nwords == count)
                printf("\"%s\" count = %d\n",pbuf,count);
            pbuf[n] = '\0'; n = 0; count = n;
        }
 
        else { 
            pbuf[n] = text[i]; 
            if (isspace(pbuf[n++])) count++; 
        }
 
    fclose(fp);
 
    return 0;
}
Вот еще загвостка на функции isspace, пишет что нужен прототип
0
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:21
Подключите #include <ctype.h>
0
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:25  [ТС]
Блин, янаверно уже Вас достала, но вот это я вообще найти не могу Unable to open file COS.OBJ
0
 Аватар для zitxbit
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:28
добавьте путь и имя файла cos.obj в коммандную строку linker'а, или поменяйте компилятор.
1
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:32  [ТС]
Цитата Сообщение от zitxbit Посмотреть сообщение
добавьте путь и имя файла cos.obj в коммандную строку linker'а, или поменяйте компилятор.
Спасибо Вам огромное. очень выручили ^^
0
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 4
05.04.2013, 22:06
а куда нужно поместить текстовый файл, чтобы эта программа считывала текст?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2013, 22:06
Помогаю со студенческими работами здесь

Подсчет количества слов, состоящих только из буквы 'a'
Есть программа подсчета количества слов с буквой 'a', какое условие добавить, чтобы был подсчет слов, состоящих только из буквы 'a' ??? ...

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

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

Стек: нахождение количества слов, состоящих из более чем 3-х символов
Проблема в организации цикла для нахождения кол-ва слов, состоящих из более чем 3-х символов. Помогите пожалуйста) P.S: Работа ведется с...

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru