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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
positivemann
1 / 1 / 0
Регистрация: 20.11.2009
Сообщений: 35
#1

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

21.11.2009, 15:28. Просмотров 1257. Ответов 7
Метки нет (Все метки)

Привет, Программисты! Нужна ваша помощь... Есть задача по поводу работы со строками:
"Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых." Есть код по по поиску и вводу предложений с вопросительным знаком, они вроде и похожи, но как не пытался под свою изменить - не получается (пишу на Turbo C++), вот её код:

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
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <iostream>
#include <string> 
using namespace std;
 
 char bufRus[256];
 char* Rus(char* mes)
  { AnsiToOem(mes, bufRus);
     return bufRus;
   }
int main(void)
{  char ch[2]; FILE * f;
  f=fopen("D:\\FileTXT\\text2.txt","r");
  if (f == NULL)
     { cout << Rus("Файл  не найден!\n");
       getch(); return 1;
      }
 
// определяем длину файла
 
    fseek(f,0,SEEK_END); long len=ftell(f);
 
// выделяем буфер необходимого размера
 
    char *buf=new char[len+1];
 
// смещаем указатель на начало файла и
// считываем файл в буфер
 
    fseek(f,0,SEEK_SET);
    fread(buf, len,1, f); buf[len]='\0';
// выделение предложений из текста
  long n = 0; // позиция начала предложения
  long i=0, j=0, kol=0;
  while(buf[i])
   { if (buf[i]== '?')
      { //вывод символов вопросительного предложения
        for(j=n; j<=i;j++)
        {ch[0]=buf[j]; ch[1]='\0';
         cout << Rus(ch);
         } kol++;
         n=i+1;
      }
     if (buf[i]=='.' || buf[i]== '!') n=i+1;
    i++;
   }  fclose(f); cout << endl;
 cout <<  "\n kol = " << kol;
 cout << Rus("\n Для выхода нажмите <Enter>:");
 getch(); return 0;
}
Ребята, пожалуйста, помогите разобраться, не могу решить и всё тут Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2009, 15:28     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых
Посмотрите здесь:

Считать текст из файла и вывести на экран только предложения, содержащие введенное с клавиатуры слово C++
Написать программу, которая считывает текст из файла и выводит предложения, не содержащие запятых C++
C++ Считать текст из файла и вывести на экран только предложения, не содержащие запятых
Вывести на экран все слова предложения, содержащие в качестве подстроки слово w C++
C++ Считать текст из файла и вывести на экран все его предложения в обратном порядке
C++ Вывод на экран только предложения, не содержащие запятых.
Нужна программа, которая считывает текст из файла и выводит на экран только предложения, не содержащие запятых C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
qwarta
67 / 67 / 6
Регистрация: 20.11.2009
Сообщений: 232
21.11.2009, 23:24     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых #2
1. В строке 8 объявлен массив bufRus, а дальше используется buf.
2. В строке 33 производится чтение 1 (одного !!!) символа размером len (перепутаны местами). Проверка:
C++
1
2
3
int num;
num=fread(buf, len,1, f);
cout << num;
positivemann
1 / 1 / 0
Регистрация: 20.11.2009
Сообщений: 35
22.11.2009, 09:15  [ТС]     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых #3
Цитата Сообщение от qwarta Посмотреть сообщение
1. В строке 8 объявлен массив bufRus, а дальше используется buf.
2. В строке 33 производится чтение 1 (одного !!!) символа размером len (перепутаны местами). Проверка:
C++
1
2
3
int num;
num=fread(buf, len,1, f);
cout << num;
bufRus - это же функция для работы русского алфавита, а проосто buf - это буфер, в который записываются предложения.
И не совсем понятно, что ты хотел сказать этим кодом
C++
1
2
3
[CODE]int num;
num=fread(buf, len,1, f);
cout << num;[/CODE]
Спасибо, конечно, но в скобках у тебя такая же расстановка, ты написал, что у меня перепутано; и вот что за num... Если не трудно, то объясни, что это)
Вообще листнг программы написан норм, просто я не могу понять, что добавить нужно, чтобы выводились предложения без запятых, а не выводились предложения с вопросительным знаком
Можно ещё учебник посоветовать какой-нибудь хороший, а то я смотрел список у вас на форуме - выбрать трудновато)
qwarta
67 / 67 / 6
Регистрация: 20.11.2009
Сообщений: 232
22.11.2009, 10:36     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых #4
size_t fread(void *buf, size_t size, size_t count, FILE *stream);

Функция fread() считывает из потока stream count объектов, каждый из которых имеет размер size байтов, и записывает их в массив, адресуемый указателем buf.
Функция fread() возвращает количество действительно считанных символов.
Для того, чтобы проверить это и объявлена целочисленная переменная num, в которую функция fread() запишет количество считанных символов.
Объявление одномерного массива выглядит следующим образом:

тип имя_переменной[размер]

Общий вид функции выглядит следующим образом:

тип_возвращаемого_значения имя_функции(список_параметров)
{
тело функции
}
bufRus[] - массив, который передается в функцию Rus() ( точнее в AnsiToOem(); )
Лично я пользуюсь книгами:
Керниган и Ричи. Язык Си
Г. Шилдт. Полный справочник по С. Четвертое издание.
Г. Шилдт. Полный справочник по С++. Четвертое издание.
Дальше - на любителя.
positivemann
1 / 1 / 0
Регистрация: 20.11.2009
Сообщений: 35
22.11.2009, 10:52  [ТС]     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых #5
Цитата Сообщение от qwarta Посмотреть сообщение
Для того, чтобы проверить это и объявлена целочисленная переменная num, в которую функция fread() запишет количество считанных символов.
НУ проверю я, да в общем то я знаю, что мне нужно туда записать.
Если в строке 38 просто заменить знак вопроса '?' на запятую ',' , то выводится предложение до запятой, а мне нужно, что бы выводилось предложение полностью. В этом то вся и трудность, не могу понять этого. Выводит только до указанного символа...Вот как записать, чтобы выводилось всё до запятой и после неё, ну точнее чтобы это не выводилось, ну это уже условее полегче)
marina2
Рожденная для битвы
271 / 49 / 5
Регистрация: 08.11.2009
Сообщений: 1,019
17.10.2010, 21:44     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых #6
Я сейчас решаю такую задачу. Только не могу понять, почему у меня выводятся только знаки припинания. Вот код. Помагите, пожалуйста найти ошибку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
buf[len]='0';
long n=0,//индекс начала предложения
j=0, //текущий символ
i=0;//символ конца предложения
while (buf [i])
{
if (buf [i]=='?'||buf [i]=='!'||buf [i]=='.')
for (j=n; j<=i; j++)
  if(buf [j]==',')
   break;
  else if(j==i)
for (j=n; j<=i; j++)
cout<<buf[j];
n=i+1;
i++;
}
Добавлено через 2 часа 33 минуты
Помагите, очень нужно. Вроде все идет по логике, но результат не такой, как нужно.
accept
4819 / 3239 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.10.2010, 14:34     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых #7
C++
1
buf[len]='0';
это buf[len] = '\0'; ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2010, 20:08     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых
Еще ссылки по теме:

Считать текст из файла и вывести на экран только предложения, не содержащие запятых C++
Вывести предложения, не содержащие запятых C++
Вывести из файла предложения, в которых нет запятых C++
C++ Считать текст из файла и вывести на экран только предложения не содержащие запятых
C++ Вывести на экран предложения из файла которые не имеют запятых

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

Или воспользуйтесь поиском по форуму:
marina2
Рожденная для битвы
271 / 49 / 5
Регистрация: 08.11.2009
Сообщений: 1,019
18.10.2010, 20:08     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых #8
У меня получилось!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
buf[len]='\0';
long n=0,//индекс начала предложения
j=0, //текущий символ
i=0;//символ конца предложения
while (buf [i])
{
if (buf [i]=='?'||buf [i]=='!'||buf [i]=='.')
    {for (j=n; j<=i; j++)
        {
             if(buf [j]==',')
               break;
             else if(j==i)
          for (j=n; j<=i; j++)
          cout<<buf[j];
         }
      n=i+1;
     }
i++;
}
Yandex
Объявления
18.10.2010, 20:08     Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых
Ответ Создать тему
Опции темы

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