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

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

04.05.2012, 23:30. Показов 2582. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru