Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

03.11.2013, 16:52. Просмотров 198. Ответов 5
Метки нет (Все метки)

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

Текст созданной программы:

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.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2013, 16:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с файлами и предложениями (C++):

Работа с предложениями - C++
Добрый День!!! Помогите решать Задано несколько предложений. Определить количество предложений, если известно, что каждое...

Пробелы между словами\предложениями - C++
Помогите с заданием: Дан произвольный текст. Отредактировать текст так, чтобы: а) между словами был ровно один пробел; б)...

Работа с файлами - C++
Сама задача звучит так: задан текстовой файл, содержащий вещественные числа (сколько мы не знаем). Необходимо считать данные из этого...

Работа с файлами - C++
Помогите пожалуйста, что не правильно,,,не выводит результат в файл #include&lt;iostream.h&gt;; #include&lt;fstream.h&gt;; #include&lt;iomanip&gt;; ...

работа с файлами - C++
где char data должно быть чтение из файла.Пример как я это реализовал тут //функция шифрования void encryption(unsigned long long...

Работа с файлами - C++
В радиоателье хранятся квитанции о сданных в ремонт телевизорах. Каждая квитанция содержит марку телевизора, дату приемки в ремонт,...

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

Добавлено через 4 минуты
zcc, спасибо. Ошибка ушла. Но дело в том, что дальше что-то не так. При запуске после ввода числа, кроме сообщения о о том что надо вывести на экран предложения с указанным количеством слов больше ничего не делает. Подскажите, пожалуйста, в чем там дело.
0
zss
Модератор
Эксперт С++
6874 / 6436 / 2154
Регистрация: 18.12.2011
Сообщений: 16,924
Завершенные тесты: 1
03.11.2013, 21:08 #5
Цитата Сообщение от Анатолий_95 Посмотреть сообщение
Подскажите, пожалуйста, в чем там дело.
В вышеописанной строке Вы, кажется хотите сравнить текуший символ x[i] со всеми
символами строки distrib. Создайте еще один цикл и в нем сравните их по очереди.
0
ninja2
814 / 188 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
03.11.2013, 21:28 #6
Цитата Сообщение от Анатолий_95 Посмотреть сообщение
поясните, пожалуйста, Вашу рецензию на distrib. Где и как надо изменить код. И если можно прокомментируйте выложенный мною код, где там ошибки?
ВЫше пояснили distrib - это строка (например: "влыфаоыфвдаоыфвдаофывдла"), а buf[i] это символ (например 'd').
Нельзя сравнивать символ со строкой, это разные типы символ char, а строка char* .
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 21:28
Привет! Вот еще темы с ответами:

работа с файлами - C++
пишу прогу по файлам на С++, мне нужно использовать ф-ию которая сбрасывает указакеть на начало потока. В Си есть ф-ия rewind, есть ли...

Работа с файлами - C++
Доброе время суток. Работа с файлами 1. Вывести на экран текст программы. 2. Вывести на экран текст программы, но...

Работа с файлами - C++
Здравствуйте, делаю задачку &quot;Выборочная сортировка&quot;, но застрял на работе с файлами, понять не могу никак... нужно считать числа из...

работа с файлами - C++
лет 5 назад изучал с++ консольный еще в технаре. Щас php считаю более востребован да и проще. Для интереса подскажите какои оператор...


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

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

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