Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Make Me SmiLe
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 21
04.05.2012, 23:30     Вывод предложений, состоящих из заданного количества слов #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
    
#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);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2012, 23:30     Вывод предложений, состоящих из заданного количества слов
Посмотрите здесь:

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

Найти в списке из 7 слов все слова, состоящие из заданного количества букв C++
C++ Подсчет количества предложений и слов в предложении
Предложения, состоящие из заданного количества слов, упорядоченных по алфавиту C++

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

Или воспользуйтесь поиском по форуму:
sasha08081995
0 / 0 / 0
Регистрация: 29.01.2013
Сообщений: 4
05.04.2013, 22:06     Вывод предложений, состоящих из заданного количества слов #18
а куда нужно поместить текстовый файл, чтобы эта программа считывала текст?
Yandex
Объявления
05.04.2013, 22:06     Вывод предложений, состоящих из заданного количества слов
Ответ Создать тему
Опции темы

Текущее время: 23:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru