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

Работа с файлами и предложениями - C++

Восстановить пароль Регистрация
 
Анатолий_95
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 10
03.11.2013, 16:52     Работа с файлами и предложениями #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
#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 v bufer//
  fin.seekg(0,ios::beg);
  fin.read(buf,len);
  buf[len]='\0';
 
  int num_word; //shablon cisla slov v predlozenii
  cin>>num_word;
  cout<<"Display the proposals contain"<<" "<<num_word
         <<" "<<"words"<<endl;
 
  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
 
  //cikl zavershaetsya pri nahozdenii nul-simvola
  while(buf[i]){
    if(buf[i]=='?'||buf[i]=='.'||buf[i]=='!'){
          for(j=n;j<=i;j++){
        [U] if(buf[i]==distrib||buf[i]==' ')[/U]{
                        nw++;
                           if(nw==num_word){
         cout<<buf[j];
                              n=i+1;   
                              i++;
                           }
                    }
               }
             }
     }
  fin.close();
  return 0;
}
Компиллятор выдает ошибку в подчеркнутой строке: Cannot convert 'char' to 'char *'.
Кроме того, прога кроме вывода на экран сообщения о том какие надо выводить предложения дальше не идет. Где ошибки?

Добавлено через 1 минуту
Ошибка в строке 38.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 16:52     Работа с файлами и предложениями
Посмотрите здесь:

C++ Работа с предложениями
C++ Работа с файлами
работа с файлами C++
C++ Работа с файлами
Работа с файлами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.11.2013, 20:17     Работа с файлами и предложениями #2
Анатолий_95, distrib должен быть символ char, а не строка типа char* .
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
03.11.2013, 20:52     Работа с файлами и предложениями #3
действительно, строка 38 должна выглядеть как-то так:
C++
1
    if(buf[i]==distrib[j]||buf[i]==' '){
Анатолий_95
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 10
03.11.2013, 20:59  [ТС]     Работа с файлами и предложениями #4
ninja2, поясните, пожалуйста, Вашу рецензию на distrib. Где и как надо изменить код. И если можно прокомментируйте выложенный мною код, где там ошибки?

Добавлено через 4 минуты
zcc, спасибо. Ошибка ушла. Но дело в том, что дальше что-то не так. При запуске после ввода числа, кроме сообщения о о том что надо вывести на экран предложения с указанным количеством слов больше ничего не делает. Подскажите, пожалуйста, в чем там дело.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
03.11.2013, 21:08     Работа с файлами и предложениями #5
Цитата Сообщение от Анатолий_95 Посмотреть сообщение
Подскажите, пожалуйста, в чем там дело.
В вышеописанной строке Вы, кажется хотите сравнить текуший символ x[i] со всеми
символами строки distrib. Создайте еще один цикл и в нем сравните их по очереди.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.11.2013, 21:28     Работа с файлами и предложениями #6
Цитата Сообщение от Анатолий_95 Посмотреть сообщение
поясните, пожалуйста, Вашу рецензию на distrib. Где и как надо изменить код. И если можно прокомментируйте выложенный мною код, где там ошибки?
ВЫше пояснили distrib - это строка (например: "влыфаоыфвдаоыфвдаофывдла"), а buf[i] это символ (например 'd').
Нельзя сравнивать символ со строкой, это разные типы символ char, а строка char* .
Yandex
Объявления
03.11.2013, 21:28     Работа с файлами и предложениями
Ответ Создать тему
Опции темы

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