Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
#1

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

04.05.2012, 23:30. Просмотров 1222. Ответов 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);
}

http://www.cyberforum.ru/cpp-beginners/thread1739420.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2012, 23:30
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывод предложений, состоящих из заданного количества слов (C++):

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

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

Вывод в столбик первых слов всех предложений
Помогите написать программу для вывода в столбик первых слов всех предложений....

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

Определить количество слов состоящие из заданного количества букв
Задана не пустая последовательность слов из латинских букв. последнее символом...

17
Sylar9
134 / 55 / 13
Регистрация: 04.09.2011
Сообщений: 1,952
Записей в блоге: 1
05.05.2012, 07:59 #2
Что именно не работает ?
0
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 09:03  [ТС] #3
Добавлено через 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
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 09:16 #4
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
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 09:39  [ТС] #5
Цитата Сообщение от 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
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 09:57 #6
А какой у вас компилятор?
0
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 09:59  [ТС] #7
Цитата Сообщение от zitxbit Посмотреть сообщение
А какой у вас компилятор?
Borland C++ for DOS
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:00 #8
Не подходит. Нужен хотя-бы Bloodshed Dev-C++ for Windows
0
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:03  [ТС] #9
Цитата Сообщение от zitxbit Посмотреть сообщение
Не подходит. Нужен хотя-бы Bloodshed Dev-C++ for Windows
К сожалению требуют чтобы практика была написана именно на нем(
А только так можно решить эту задачу? На этом компиляторе не получится?(
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:03 #10
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
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:07  [ТС] #11
Цитата Сообщение от 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
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:09 #12
Извините, забыл удалить:
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
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:20  [ТС] #13
Цитата Сообщение от 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
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:21 #14
Подключите #include <ctype.h>
0
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:25  [ТС] #15
Блин, янаверно уже Вас достала, но вот это я вообще найти не могу Unable to open file COS.OBJ
0
zitxbit
89 / 741 / 279
Регистрация: 11.04.2012
Сообщений: 971
05.05.2012, 10:28 #16
добавьте путь и имя файла cos.obj в коммандную строку linker'а, или поменяйте компилятор.
1
Make Me SmiLe
0 / 0 / 1
Регистрация: 04.05.2012
Сообщений: 21
05.05.2012, 10:32  [ТС] #17
Цитата Сообщение от zitxbit Посмотреть сообщение
добавьте путь и имя файла cos.obj в коммандную строку linker'а, или поменяйте компилятор.
Спасибо Вам огромное. очень выручили ^^
0
sasha08081995
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 4
05.04.2013, 22:06 #18
а куда нужно поместить текстовый файл, чтобы эта программа считывала текст?
0
05.04.2013, 22:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2013, 22:06
Привет! Вот еще темы с решениями:

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

Предложения, состоящие из заданного количества слов, упорядоченных по алфавиту
5. *выводит предложения, состоящие из заданного количества слов, упорядоченных...

Вывести на экран строки, состоящие из заданного количества слов
Вывести на экран строки, состоящие из заданного количества слов (количество...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru