Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 20.11.2009
Сообщений: 35
1

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

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

Author24 — интернет-сервис помощи студентам
Привет, Программисты! Нужна ваша помощь... Есть задача по поводу работы со строками:
"Из текстового файла неизвестного размера вывести на экран все предложения, не содержащие запятых." Есть код по по поиску и вводу предложений с вопросительным знаком, они вроде и похожи, но как не пытался под свою изменить - не получается (пишу на 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;
}
Ребята, пожалуйста, помогите разобраться, не могу решить и всё тут Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2009, 15:28
Ответы с готовыми решениями:

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

Считать текст из файла и вывести на экран только предложения, не содержащие запятых
Здравствуйте. Прошу помощи в написание программу на C++ &quot;Написать программу, которая считывает...

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

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

7
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
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;
0
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... Если не трудно, то объясни, что это)
Вообще листнг программы написан норм, просто я не могу понять, что добавить нужно, чтобы выводились предложения без запятых, а не выводились предложения с вопросительным знаком
Можно ещё учебник посоветовать какой-нибудь хороший, а то я смотрел список у вас на форуме - выбрать трудновато)
0
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
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(); )
Лично я пользуюсь книгами:
Керниган и Ричи. Язык Си
Г. Шилдт. Полный справочник по С. Четвертое издание.
Г. Шилдт. Полный справочник по С++. Четвертое издание.
Дальше - на любителя.
0
1 / 1 / 0
Регистрация: 20.11.2009
Сообщений: 35
22.11.2009, 10:52  [ТС] 5
Цитата Сообщение от qwarta Посмотреть сообщение
Для того, чтобы проверить это и объявлена целочисленная переменная num, в которую функция fread() запишет количество считанных символов.
НУ проверю я, да в общем то я знаю, что мне нужно туда записать.
Если в строке 38 просто заменить знак вопроса '?' на запятую ',' , то выводится предложение до запятой, а мне нужно, что бы выводилось предложение полностью. В этом то вся и трудность, не могу понять этого. Выводит только до указанного символа...Вот как записать, чтобы выводилось всё до запятой и после неё, ну точнее чтобы это не выводилось, ну это уже условее полегче)
0
Рожденная для битвы
293 / 71 / 14
Регистрация: 08.11.2009
Сообщений: 1,260
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 минуты
Помагите, очень нужно. Вроде все идет по логике, но результат не такой, как нужно.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.10.2010, 14:34 7
C++
1
buf[len]='0';
это buf[len] = '\0'; ?
0
Рожденная для битвы
293 / 71 / 14
Регистрация: 08.11.2009
Сообщений: 1,260
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++;
}
0
18.10.2010, 20:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2010, 20:08
Помогаю со студенческими работами здесь

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

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

Считать текст из файла и вывести на экран только предложения, не содержащие запятых
Здравствуйте. Прошу помощи в написание программу на C# &quot;Написать программу, которая считывает текст...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru