0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 4
1

Написать программу, которая считывает текст из файла и определяет количество абзацев в нем

09.04.2015, 21:18. Показов 5273. Ответов 15
Метки нет (Все метки)

помогите неопытному
нужно написать программу, которая считывает текст из файла и определяет количество абзацев в нем.
Полученные данные дописать в файл.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2015, 21:18
Ответы с готовыми решениями:

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

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

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

Написать программу которая считывает считывает текст из файла и записывает в другой слова состоящие не менее чем из 7 букв
Написать программу которая считывает считывает текст из файла и записывает в другой слова состоящие...

15
1172 / 833 / 359
Регистрация: 26.02.2015
Сообщений: 3,743
09.04.2015, 21:43 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <fstream>
#include <iostream>
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
    char ch = 'a';
    int number = 1;
    fstream file("test.txt");
    file.seekg(0);
    while(file){
        file.get(ch);
        if(ch == '\n')
            number++;
    }
    cout << "Количество абзацев: " << number << endl;
    system("PAUSE");
    return 0;
}
0
183 / 167 / 53
Регистрация: 27.01.2013
Сообщений: 788
09.04.2015, 21:47 3
символ абзаца #13
считай их
0
Nishen
09.04.2015, 21:49
  #4

Не по теме:

Цитата Сообщение от saden Посмотреть сообщение
символ абзаца #13
считай их
Я не знал, спасибо! :)

0
saden
09.04.2015, 21:51
  #5

Не по теме:

Nishen, на самом деле есть #10 и #13 (в гекс)

0
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 4
09.04.2015, 21:55  [ТС] 6
нужно использовать функции чтения из файла и записи в файл и что означают строки?:
C++
1
2
      if(ch == '\n')
            number++;
0
183 / 167 / 53
Регистрация: 27.01.2013
Сообщений: 788
09.04.2015, 21:56 7
" определяет количество абзацев в нем"
0
1172 / 833 / 359
Регистрация: 26.02.2015
Сообщений: 3,743
09.04.2015, 22:01 8
C++
1
2
3
4
5
    while(file){
        file.get(ch);
        if(ch == '\x0A' || ch == '\x0D')
            number++;
    }
Я и так читаю из файла данные с помощью
C++
1
file.get(ch);
А запись в файл можно сделать так, например:
C++
1
2
file.seekg(0, ios::end);
file << number;
0
24 / 24 / 11
Регистрация: 09.04.2015
Сообщений: 80
09.04.2015, 22:02 9
А в конце последнего абзаца \n то может не стоять, если не ошибаюсь. И наоборот, может стоять \n, а за ним пустая строка. Считать ли это абзацем?
0
1172 / 833 / 359
Регистрация: 26.02.2015
Сообщений: 3,743
09.04.2015, 22:10 10
Цитата Сообщение от np2001 Посмотреть сообщение
А в конце последнего абзаца \n
Так я считаю по тем символам абзаца, что идут до начала нового абзаца.
Цитата Сообщение от np2001 Посмотреть сообщение
может стоять \n, а за ним пустая строка.
Но ведь Enter нажат и новый абзац начат.
0
24 / 24 / 11
Регистрация: 09.04.2015
Сообщений: 80
09.04.2015, 22:17 11
Цитата Сообщение от Nishen Посмотреть сообщение
Так я считаю по тем символам абзаца, что идут до начала нового абзаца.

Но ведь Enter нажат и новый абзац начат.
Ну вот например такой текст "Первый абзац\nВторой абзац" - абзацев вроде как два, но \n всего один. Если после \n пустая строка будет, тогда вроде как правильно получается. Или я уже подзабыл значение слова "Абзац"?
0
1172 / 833 / 359
Регистрация: 26.02.2015
Сообщений: 3,743
09.04.2015, 22:19 12
Цитата Сообщение от Nishen Посмотреть сообщение
int number = 1;
Я учел первый абзац.
0
24 / 24 / 11
Регистрация: 09.04.2015
Сообщений: 80
09.04.2015, 22:34 13
Цитата Сообщение от Nishen Посмотреть сообщение
Я учел первый абзац.
Да, действительно я не обратил внимание... Ну если пустая строка тоже считается за абзац, тогда все верно.
0
1172 / 833 / 359
Регистрация: 26.02.2015
Сообщений: 3,743
10.04.2015, 05:36 14
np2001, доработать ее нужно. Есть мелкие недочеты в ней, например, если файл будет пустой, то у нас получится один абзац, хотя их вообще нет.
0
1172 / 833 / 359
Регистрация: 26.02.2015
Сообщений: 3,743
11.04.2015, 10:17 15
Может быть не актуально, но начатое нужно доводить до конца. Вот конечный результат программы:
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
53
54
#include <fstream>
#include <iostream>
using namespace std;
 
int main(){
    setlocale(LC_ALL, "Russian");
    //Переменная ch предназначена для хранения считанного символа
    //Переменная number предназначена для хранения числа абзацев
    //Переменаня position предназначена для хранения значения текущей позиции
    char ch;
    int number = 0, position = 1;
    //Открытие файла для чтения
    fstream file("test.txt");
    //Устанавливаем указатель на последний символ
    file.seekg(0, ios::end);
    //Проверяем, в какой позиции стоит указатель
    position = file.tellg();
    //Если указатель указывает на 0 позицию
    if(position == 0){
        //Значит файл пустой и абзацев нет
        cout << "Количество абзацев: " << number << endl;
        //Выходим из программы
        system("PAUSE"); exit(1);
    }
    //Иначе абзацы есть. Учитываем первый абзац
    number++;
    //Устанавливаем указатель в начало файла
    file.seekg(0, ios::beg);
    //Читаем файл до EOF
    while(file){
        //Извлекаем очередной символ
        file.get(ch);
        //Если очередной символ - символ абзаца
        if(ch == '\x0A' || ch == '\x0D'){
            //Увеличиваем число абзаца
            number++;
        }
    }
    //Устанавливаем указатель на конец файла
    file.seekg(0, ios::end);
    //Читаем последний символ
    file.get(ch);
    //Если последний символ - символ абзаца
    if(ch == '\x0A' || ch == '\x0D'){
        //Вычитаем из числа абзацев 2 абзаца. Один - пустая строка,
        //следующая за символом абзааца, второй - из-за while(file).
        //Данный цикл ПОЧЕМУ-ТО считывает последний символ дважды.
        number -= 2;
    }
    //Выводим результат на экран
    cout << "Количество абзацев: " << number << endl;
    system("PAUSE");
    return 0;
}
Добавлено через 1 минуту
И все равно недочет есть. Если просто ввести знак абзаца, то считает количество абзацев, как 1.
0
0 / 0 / 0
Регистрация: 01.07.2019
Сообщений: 7
01.07.2019, 18:22 16
Nishen,
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2019, 18:22
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru