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

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

Войти
Регистрация
Восстановить пароль
 
Preston
81 / 3 / 1
Регистрация: 09.09.2014
Сообщений: 17
#1

Разбить текст на страницы - C++

06.01.2016, 19:20. Просмотров 396. Ответов 13
Метки нет (Все метки)

Дан текстовый файл. Преобразовать его, разбив текст на страницы и пронумеровав их, причем номер нечетной страницы должен размещаться в правом нижнем углу, а номер четной страницы - в ее левом нижнем углу. Число стока странице задается, а ширина страницы определяется самой длинной строкой в данной странице. Конец страницы отмечается символом с кодом 12, который помещается в отдельной строке.

Добавлено через 6 часов 0 минут
ну очень надо

Добавлено через 17 часов 1 минуту
Хотя бы алгоритм, код сам запилю. И какие процедуры и подпрограммы использовать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2016, 19:20     Разбить текст на страницы
Посмотрите здесь:

Разбить текстовый файл на страницы - C++
Мне было задано 3 задачи две я решил, а вот одну не могу помогите пожалуйста. Постановка задачи: Я должен откыть текстовый файл, потом...

Разбить текст на абзацы - C++
Доброй ночи, уважаемые программисты. Помогите, пожалуйста, с программкой на С++ в VS2013. Условие таково:Задан текст. Предложения текста...

Разбить текст на абзацы - C++
Здравствуйте, уважаемые программисты. Такой вопрос. Есть задание и для него уже написана (ниже) программа (спасибо одному хорошему человеку...

Разбить текст на абзацы - C++
Всем добрый вечер. Помогите, пожалуйста, с программой на С++ в VS2013. В общем, задан текст. Предложения текста идут подряд....

Текст из файла разбить на строки - C++
Помогите написать программу, с функцией которая выводит из текстового файла только N строк. Где N аргумент функции main

Разбить файл на текст и числа - C++
2.Дан текстовый файл. В каждом его строке первые 30 позиций отводятся под текст, а оставшаяся часть - под действительное число. Создать два...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kuza84
-4 / 23 / 4
Регистрация: 25.04.2013
Сообщений: 195
07.01.2016, 04:18     Разбить текст на страницы #2
Цитата Сообщение от Preston Посмотреть сообщение
ну очень надо
не знаю кто вам такое дурацкое задание дал, но есть текстовые процессоры типа Ворда там все можно сделать, даже шаблон можно сделать, чтобы каждый открываемый текст так форматировался.

Добавлено через 3 минуты
а символ 12 являлся символом конца страницы, заставляя принтер выплюнуть текущий лист бумаги и загрузить новый.
поищите шаблон чтобы сплошной текст форматировался в книжный формат
Preston
81 / 3 / 1
Регистрация: 09.09.2014
Сообщений: 17
07.01.2016, 04:33  [ТС]     Разбить текст на страницы #3
Проблема в том, что я только только начал С++ изучать. И даже не понимаю про какие текстовые процессоры вы говорите =( даже если посмотреть их, проблема реализации в С++ остаётся.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
07.01.2016, 21:57     Разбить текст на страницы #4
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
/*
Дан текстовый файл. Преобразовать его, разбив текст на страницы и пронумеровав их,
причем номер нечетной страницы должен размещаться в правом нижнем углу, а номер четной
страницы - в ее левом нижнем углу. Число стока странице задается, а ширина страницы
определяется самой длинной строкой в данной странице. Конец страницы отмечается символом
с кодом 12, который помещается в отдельной строке.
*/
///////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
///////////////////////////////////////////////////////////////////////////////
typedef std::string                     T_str;
typedef T_str                           T_line;
typedef std::vector     < T_line    >   T_lines;
///////////////////////////////////////////////////////////////////////////////
class  T_page
{
    //-------------------------------------------------------------------------
    static  const   char    END_PAGE_SYMB   =   12;
    T_lines                 lines_;
    //-------------------------------------------------------------------------
public:
    //-------------------------------------------------------------------------
    static  int             lines_per_page_;
    static  int             page_counter_;
    //-------------------------------------------------------------------------
    friend
    std::istream    &   operator>>
        (
            std::istream    &   istr,
            T_page          &   page
        )
    {
        page.lines_.clear();
        size_t  max_line_size{};
        T_line  cur_line;
 
        for (
                int  i{};
 
                    i   <   lines_per_page_
                &&  getline( istr, cur_line );
 
                ++i
            )
        {
            max_line_size  =   std::max     (
                                                max_line_size,
                                                cur_line.size()
                                            );
 
            page.lines_.push_back( cur_line );
        }//for
 
        auto    page_num_line   =   std::to_string( ++page_counter_ );
 
        if( page_counter_ % 2 == 1 )
        {
            page_num_line   =       T_line  (
                                                    max_line_size
                                                -   page_num_line.size(),
 
                                                ' '
                                            )
 
                                +   page_num_line;
        }
 
        page.lines_.push_back( page_num_line );
 
        page.lines_.push_back
            (
                T_str   (
                            1,
                            END_PAGE_SYMB
                        )
            );
 
        return  istr;
    }
    //-------------------------------------------------------------------------
    friend
    std::ostream    &   operator<<
        (
            std::ostream            &   ostr,
            T_page          const   &   page
        )
    {
        std::copy
            (
                page.lines_.begin                   (),
                page.lines_.end                     (),
                std::ostream_iterator< T_line >     ( ostr, "\n" )
            );
 
        return  ostr;
    }
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////
int     T_page::lines_per_page_;
int     T_page::page_counter_;
///////////////////////////////////////////////////////////////////////////////
void    print_formatted_text_from_stream_to_stream_with_lines_per_page
    (
        std::istream    &   istr,
        std::ostream    &   ostr,
        int                 lines_per_page
    )
{
    T_page::lines_per_page_     =   lines_per_page;
    T_page::page_counter_       =   0;
 
    std::copy
        (
            std::istream_iterator< T_page >     ( istr  ),
            std::istream_iterator< T_page >     (),
            std::ostream_iterator< T_page >     ( ostr  )
        );
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_str   const   IFILE_NAME          =   "i.txt";
    T_str   const   OFILE_NAME          =   "o.txt";
 
    std::ifstream   ifile( IFILE_NAME   );
    std::ofstream   ofile( OFILE_NAME   );
 
    if( ifile )
    {
        print_formatted_text_from_stream_to_stream_with_lines_per_page
            (
                ifile,
                ofile,
                3
            );
 
        std::cout   <<  "File is filled."
                    <<  std::endl;
    }
    else
    {
        std::cout   <<  "Error!"
                    <<  std::endl;
    }//else
 
    system("pause");
}
Preston
81 / 3 / 1
Регистрация: 09.09.2014
Сообщений: 17
07.01.2016, 23:13  [ТС]     Разбить текст на страницы #5
Mr.X, Я очень благодарен Вам. Это раздел C++ для начинающих, а код выглядит профессионально. Я понимаю от силы несколько алгоритмов. Могу я Вас попросить добавить хотя бы несколько комментариев, остальное я попробую разобрать сам. Я буду очень признателен.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
07.01.2016, 23:29     Разбить текст на страницы #6
Цитата Сообщение от Preston Посмотреть сообщение
Это раздел C++ для начинающих, а код выглядит профессионально.
А начинающий это какой? Который STL не использует? Страуструп с вами не согласен! Он про библиотеку шаблонов уже в первых главах своей книги пишет. А те "начинающие", которые на Си кропают, и должны в сишный раздел идти, я считаю.
Ваша задача на работу с потоками, здесь для них используется только алгоритм std::copy и перегрузка операторов << и >> ввода-вывода в поток.
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
07.01.2016, 23:32     Разбить текст на страницы #7
Цитата Сообщение от Preston Посмотреть сообщение
роблема в том, что я только только начал С++ изучать. И даже не понимаю про какие текстовые процессоры
и тут
Цитата Сообщение от Mr.X Посмотреть сообщение
C++
1
2
3
4
5
6
#include <algorithm>
#include <fstream>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
08.01.2016, 00:27     Разбить текст на страницы #8
SergioO, ну так С++ в заголовочных файлах стандартной библиотеки и содержится. А некоторые тут "изучают" С++, кропая на Си. И кого они этим пытаются обмануть?
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
08.01.2016, 17:28     Разбить текст на страницы #9
Цитата Сообщение от Mr.X Посмотреть сообщение
SergioO, ну так С++ в заголовочных файлах стандартной библиотеки и содержится. А некоторые тут "изучают" С++, кропая на Си. И кого они этим пытаются обмануть?
вопрос не в том кто на чем "кропает", а в том, что для новичка
<algorithm>, <vector>,<iterator> - это неподъемный груз, как не крути )) надо, как минимум, понимать "класс", "шаблон" и тд
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
08.01.2016, 17:52     Разбить текст на страницы #10
Цитата Сообщение от SergioO Посмотреть сообщение
для новичка
<algorithm>, <vector>,<iterator> - это неподъемный груз
А чего там неподъемного? Незнакомые слова всегда пугают, но уж программисту-то всегда приходится осваивать что-нибудь новое, так что этого страха вообще не должно быть. А в контейнерах, алгоритмах и итераторах ничего нет сложного, наоборот они для упрощения кода созданы, и они как раз первое, что должен выучить изучающий С++, иначе он просто дурью будет маяться, гордо надписывая над своей сишней тег С++.
kuza84
-4 / 23 / 4
Регистрация: 25.04.2013
Сообщений: 195
16.01.2016, 05:21     Разбить текст на страницы #11
Цитата Сообщение от Mr.X Посмотреть сообщение
А чего там неподъемного? Незнакомые слова всегда пугают, но уж программисту-то всегда приходится осваивать что-нибудь новое, так что этого страха вообще не должно быть. А в контейнерах, алгоритмах и итераторах ничего нет сложного, наоборот они для упрощения кода созданы, и они как раз первое, что должен выучить изучающий С++, иначе он просто дурью будет маяться, гордо надписывая над своей сишней тег С++.
начинать со структурного программирования проще чем с ООП сразу, тут люди часто используют в листингах С++ функции С для простоты видимо хотя тоже новичку не все понятно, а дружественные функции с перегрузкой операторов и классы это уже высокий уровень до него думаю новичек должен дорости.

Добавлено через 37 минут
п.с. в Самоучителе С++ Шилда черным по белому написано что изучая С++ вы уже знаете С, а С++ подмножество языка С.
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
16.01.2016, 06:31     Разбить текст на страницы #12
kuza84, да я не против, "изучайте" С++, пиша на С, только для этого сишный раздел есть, новичкуйте там сколько хотите, чего же этот-то раздел всякой сишней загаживать?

Добавлено через 22 минуты
Кстати, мысль: неплохо было бы в дополнение к сишному и плюсовому разделам создать еще раздел "Си с классами", где бы обретались все сишники, воображающие, что они "изучают" С++.
_Valera_
486 / 368 / 94
Регистрация: 27.01.2015
Сообщений: 1,588
16.01.2016, 06:32     Разбить текст на страницы #13
Цитата Сообщение от Mr.X Посмотреть сообщение
чего же этот-то раздел всякой сишней загаживать?
Цитата Сообщение от kuza84 Посмотреть сообщение
в листингах С++ функции С для простоты видимо хотя тоже новичку не все понятно,
мне вот С не нравится, потому что уныло(люди вместо высокоскоростного и комфортного поезда(с++), продолжают пользоваться ручной дрезиной(Си) и говорят что она лучше... ). Хотите простоты идите в веб. Хотя и там для ленивых места нет.
Просто если тебе лень учить, то это не значит что С++ какой то не такой.

Цитата Сообщение от SergioO Посмотреть сообщение
вопрос не в том кто на чем "кропает", а в том, что для новичка
<algorithm>, <vector>,<iterator> - это неподъемный груз, как не крути )) надо, как минимум, понимать "класс", "шаблон" и тд
Думаю даже если программист с 10 летним опытом, то всегда будут новые и не понятные моменты. Но их всегда можно загуглить.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2016, 08:44     Разбить текст на страницы
Еще ссылки по теме:

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

Разбить текст на предложения, а предложения - на слова - C++
Вот само задание. С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки...

Взять из интернет-страницы текст и заменить в нем символы - C++
есть страничка: http://anicon.sknt.ru:8000 там есть строчка Currently playing: ____@____@____@___ интересует взять текст...

Определить, удовлетворяет ли текст следующему свойству: Текст совпадает с каким то отрезком ряда 0123456789 (например: 2, 678, 89) - C++
Задача В заданный непустой текст входят только цифры и буквы. Определить, удовлетворяет ли он следующему свойству:Текст совпадает с...


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

Или воспользуйтесь поиском по форуму:
Dead_Pixel
2 / 2 / 2
Регистрация: 16.01.2016
Сообщений: 27
16.01.2016, 08:44     Разбить текст на страницы #14
Зарегался, чтобы чисто по-человечески объяснить.

Preston То, что вы изучаете сейчас - просто Си.

Я когда учился, у нас тоже на всех учебниках было написано С++, и препод говорил С++ и работали в DevC++.
Ошибиться может каждый начинающий, так что не парься, ещё успеешь понять в чём отличие.

Ты правильно сделал, что создал другую тему в другом разделе, ей там место. Решение я тебе скинул в ней.

На всяких умников (с синдромом Бога) на форуме - не обращай внимания. Они поняли в чём твоя ошибка (разделом ошибся), а толком не могут (не хотят) объяснить (что изначально просто Си изучают, а потом остальное) и тупо флудят под темой поблёскивая остроумием (тут в основном стебалы сидят).

Удачи.
Yandex
Объявления
16.01.2016, 08:44     Разбить текст на страницы
Ответ Создать тему
Опции темы

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