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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Анатолий_95
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 10
#1

Почему не работает этот код? - C++

16.11.2013, 14:34. Просмотров 198. Ответов 0
Метки нет (Все метки)

Помогите разобраться с кодом, что в нем не так? Компиллируется, ввожу число, выводит на экран сообщение, что необходимо вывести предложения, содержащие заданное число строк и далее ничего не происходит и выйти из программы можно только путем ее закрытия.
Очень долго разбираюсь, но безуспешно. Буду очень признателен.
Ниже само задание и мой код. Если можно, то прокомментируйте ошибки подробно. Заранее благодарен.

Задание:

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

Код:

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
#include<fstream.h>
#include<stdio.h>
#include<conio.h>
int main(){
 
  clrscr();
 
  //proverka naliciya faila//
    ifstream fin("1.txt",ios::nocreate);
  if(!fin) { cout<<"Error open file."<<endl;
    return 1;
  }
 
 
  //videlenie pamyati pod fail//
  fin.seekg(0,ios::end);
  long len=fin.tellg();
  char *buf=new char[len+1];
 
 
  //schitivanie faila b bufer//
  fin.seekg(0,ios::beg);
  fin.read(buf,len);
  buf[len]='\0';
 
 
  //sozdanie potoka vihoda i otkritie faila
  ofstream fout("1out.txt",ios::out);
  if(!fout){
    cout<<"Can't open output file"<<endl;
    return 1;
  }
 
 
  //vvod shablona poiska predlozeniy
  int num_word; //shablon cisla slov v predlozenii
  cout<<"Enter number"<<endl;
  cin>>num_word;
  cout<<"Display the proposals contain"<<" "<<num_word
      <<" "<<"words"<<endl;
 
 
  // poisk zadannogo usloviem predlozeniya
  char distrib[]=".,!?/<>:;)(*"; //massiv razdeliteley slov
  long n=0,       //dlya hraneniya pozicii nachala tekyshego predlozeniya
         i=0,       //dlya prosmotra massiva
             j=0;       //dlya vivoda predlozeniya
  int nw=0;       //podchet slov v predlozenii
 
  while(buf[i]){  //cikl zavershaetsya pri nahozdenii nul-simvola
    if(buf[i]=='?'||buf[i]=='.'||buf[i]=='!'){
        for(j=n;j<=i;j++){
       if(buf[i]==distrib[j]||buf[i]==' '){
             nw++;
                if(nw==num_word){
             fout<<buf[j];
                 n=i+1;
                 i++;
                }
           }
        }
    }
  }
  fin.close();
  fout.close();
  cout<<endl;
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2013, 14:34     Почему не работает этот код?
Посмотрите здесь:

Не могу понять как работает этот код в деталях C++
C++ Почему код не работает?
Как этот код работает? C++
C++ Здравствуйте, Почему не работает этот код?
C++ Почему не работает этот кусок программы?
C++ Почему этот код работает?
C++ почему код не работает?
Почему не работает код? C++
C++ Объяснить почему компилируется этот код (динамические массивы)
C++ Почему не работает код?
C++ Почему не работает код?
Почему не работает код? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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