Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 10

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

03.11.2013, 16:52. Показов 628. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.11.2013, 16:52
Ответы с готовыми решениями:

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

Работа с предложениями, взятыми из файла
Суть. Дан файл, если не существует, предлагается создание и набор. Файл содержит предложения, начинающиеся как с больших, так и с...

Работа с файлами , хотелось бы с windows system файлами
всем привет, нужна интересная идея по программированию, работа с файлами , хотелось бы с windows system файлами, у вас есть какая-то идея?...

5
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
03.11.2013, 20:17
Анатолий_95, distrib должен быть символ char, а не строка типа char* .
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
03.11.2013, 20:52
действительно, строка 38 должна выглядеть как-то так:
C++
1
    if(buf[i]==distrib[j]||buf[i]==' '){
0
0 / 0 / 0
Регистрация: 02.11.2013
Сообщений: 10
03.11.2013, 20:59  [ТС]
ninja2, поясните, пожалуйста, Вашу рецензию на distrib. Где и как надо изменить код. И если можно прокомментируйте выложенный мною код, где там ошибки?

Добавлено через 4 минуты
zcc, спасибо. Ошибка ушла. Но дело в том, что дальше что-то не так. При запуске после ввода числа, кроме сообщения о о том что надо вывести на экран предложения с указанным количеством слов больше ничего не делает. Подскажите, пожалуйста, в чем там дело.
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
03.11.2013, 21:08
Цитата Сообщение от Анатолий_95 Посмотреть сообщение
Подскажите, пожалуйста, в чем там дело.
В вышеописанной строке Вы, кажется хотите сравнить текуший символ x[i] со всеми
символами строки distrib. Создайте еще один цикл и в нем сравните их по очереди.
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
03.11.2013, 21:28
Цитата Сообщение от Анатолий_95 Посмотреть сообщение
поясните, пожалуйста, Вашу рецензию на distrib. Где и как надо изменить код. И если можно прокомментируйте выложенный мною код, где там ошибки?
ВЫше пояснили distrib - это строка (например: "влыфаоыфвдаоыфвдаофывдла"), а buf[i] это символ (например 'd').
Нельзя сравнивать символ со строкой, это разные типы символ char, а строка char* .
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2013, 21:28
Помогаю со студенческими работами здесь

Помогите с предложениями
Помогите с преложениями, ничего не получается =(

Работа с файлами(Запись,чтение,работа с данными)
Здравствуйте, никак не могу осилить файлы... Для начала вот само задание: В справочной автовокзала хранится расписание движения автобусов....

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о работниках и заработной плате. В первой...

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

функция для работы с предложениями
помогите плиз осталась последняя лаба и немогу сделать((:help: 1)Функция для работы с предложениями Функция - COUNT4LET(F:text):Word...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru