SHOW:
|
|
- or go back to the newest paste.
1 | #include <stdio.h> | |
2 | #include <string> | |
3 | #include <iostream> | |
4 | #include <Windows.h> | |
5 | #include <conio.h> | |
6 | #include <fstream> | |
7 | ||
8 | using namespace std; | |
9 | string buff; | |
10 | typedef string* Text[100]; | |
11 | int n; | |
12 | ||
13 | ifstream fin; | |
14 | ofstream fout; | |
15 | ||
16 | short menu(); | |
17 | void vvod(); | |
18 | void list(); | |
19 | - | void out(Text X, bool& l); |
19 | + | void out(Text& X, bool& l, int &length); |
20 | - | void deleteStr(Text X, int i); |
20 | + | void deleteStr(Text &X, int &length); |
21 | void clearFile(); | |
22 | ||
23 | int main() { | |
24 | SetConsoleCP(1251); | |
25 | - | SetConsoleOutputCP(1251); |
25 | + | SetConsoleOutputCP(1251); |
26 | Text X; | |
27 | int length = 0; | |
28 | short choise; | |
29 | bool k = true; | |
30 | do { | |
31 | choise = menu(); | |
32 | switch (choise) { | |
33 | case 1: | |
34 | system("cls"); | |
35 | vvod(); | |
36 | system("pause"); | |
37 | system("cls"); | |
38 | break; | |
39 | case 2: | |
40 | system("cls"); | |
41 | list(); | |
42 | system("pause"); | |
43 | system("cls"); | |
44 | break; | |
45 | case 3: | |
46 | - | out(X, k); |
46 | + | |
47 | out(X, k, length); | |
48 | system("pause"); | |
49 | system("cls"); | |
50 | break; | |
51 | case 4: | |
52 | if (k) { | |
53 | system("cls"); | |
54 | cout << "Текст не был разделён на строчки! Для начала выполните соответствующую функцию." << endl; | |
55 | system("pause"); | |
56 | system("cls"); | |
57 | break; | |
58 | } | |
59 | system("cls"); | |
60 | int i, j; | |
61 | - | cout << "Введите индекс строки, которую хотите удалить(считать с нуля):" << endl; |
61 | + | |
62 | - | cin >> i; |
62 | + | |
63 | - | deleteStr(X, i); |
63 | + | deleteStr(X, length); |
64 | system("pause"); | |
65 | system("cls"); | |
66 | break; | |
67 | case 5: | |
68 | system("cls"); | |
69 | clearFile(); | |
70 | system("pause"); | |
71 | system("cls"); | |
72 | break; | |
73 | case 0: | |
74 | cout << "До свидания!!!" << endl; | |
75 | system("pause"); | |
76 | break; | |
77 | default: | |
78 | cout << "Неверный выбор!!!" << endl; | |
79 | cout << "\n\nPress Enter..." << endl; | |
80 | system("pause"); | |
81 | system("cls"); | |
82 | break; | |
83 | } | |
84 | } while (choise); | |
85 | cout << endl; | |
86 | return 0; | |
87 | - | } |
87 | + | |
88 | ||
89 | short menu() { | |
90 | short v; | |
91 | cout << " МЕНЮ" << endl; | |
92 | cout << " Введите [1] для ввода текста\n"; | |
93 | cout << " Введите [2] для просмотра текста\n"; | |
94 | cout << " Введите [3] для разделения текста на строчки\n"; | |
95 | cout << " Введите [4] для удаления i-ой строки из текста\n"; | |
96 | cout << " Введите [5] для очистки файла\n"; | |
97 | cout << " Введите [0] для выхода\n"; | |
98 | cout << " Пункт: "; | |
99 | cin >> v; | |
100 | return v; | |
101 | } | |
102 | ||
103 | void vvod() { | |
104 | fout.open("Text.txt", ios_base::app); | |
105 | system("cls"); | |
106 | getline(cin, buff); | |
107 | string s; | |
108 | cout << "Введите строку: "; | |
109 | getline(cin, s); | |
110 | fout << s; | |
111 | fout.close(); | |
112 | cout << "Текст введен в файл: " << endl; | |
113 | cout << s << endl; | |
114 | } | |
115 | ||
116 | void list() { | |
117 | ifstream fin("Text.txt"); | |
118 | if (fin.peek() == EOF) cout << "Ваш файл пуст! Введите текст.\n"; // если первый символ конец файла | |
119 | else { | |
120 | string text; | |
121 | getline(fin, text); | |
122 | cout << text << endl; | |
123 | fin.close(); | |
124 | } | |
125 | } | |
126 | ||
127 | - | void out(Text X, bool& l) { |
127 | + | void out(Text &X, bool& l, int &length) { |
128 | system("cls"); | |
129 | ifstream fin("Text.txt"); | |
130 | if (fin.peek() == EOF) cout << "Ваш файл пуст! Введите текст.\n"; // если первый символ конец файла | |
131 | else { | |
132 | - | int d; |
132 | + | |
133 | cin >> length; | |
134 | - | cin >> d; |
134 | + | |
135 | int c = 0; | |
136 | int i = 0; | |
137 | getline(fin, text); | |
138 | while (c < text.length()) { | |
139 | string TX = text.substr(c, length); | |
140 | - | string TX = text.substr(c, d); |
140 | + | c += length; |
141 | - | c += d; |
141 | + | |
142 | *X[i] = TX; | |
143 | i++; | |
144 | } | |
145 | for (int g = 0; g < i; g++) { | |
146 | - | for (int g = -1; g < i; g++) { |
146 | + | |
147 | l = false; | |
148 | n = i; | |
149 | g++; | |
150 | cout << g << ". " << *X[j] << endl; | |
151 | } | |
152 | } | |
153 | cout << "Кол-во строк: " << n << endl; | |
154 | cout << "Запомните номер строки, которую вы вдруг захотите удалить и длину всех строк.\n"; | |
155 | fin.close(); | |
156 | } | |
157 | } | |
158 | ||
159 | void deleteStr(Text &X, int &length) { | |
160 | - | void deleteStr(Text X, int i) { |
160 | + | ofstream fout("updated_Text.txt"); |
161 | ifstream fin("Text.txt"); | |
162 | if (fin.peek() == EOF) cout << "Ваш файл пуст! Введите текст.\n"; // если первый символ конец файла | |
163 | else { | |
164 | string text; | |
165 | int c = 0, m = 0; | |
166 | getline(fin, text); | |
167 | - | int d; |
167 | + | |
168 | - | cout << "Повторите длину строки: " << endl; |
168 | + | |
169 | - | cin >> d; |
169 | + | cout << m << ". " << text.substr(c, length) << endl; |
170 | c += length; | |
171 | m += 1; | |
172 | - | cout << text.substr(c, d) << endl; |
172 | + | |
173 | - | c += d; |
173 | + | int ind; |
174 | cout << "Введите индекс строки, которую хотите удалить(считать с нуля):" << endl; | |
175 | cin >> ind; | |
176 | - | delete(X[i]); |
176 | + | if (ind+1 > m) { |
177 | cout << "Введен неверный индекс строки!" << endl; | |
178 | - | for (int k = 0; k < m; k++) cout << *X[k] << endl; |
178 | + | return; |
179 | } | |
180 | else { | |
181 | for (int i = 0; i < m-1; i++) { | |
182 | if (ind == i) { | |
183 | swap(X[i], X[i+1]); | |
184 | ind++; | |
185 | } | |
186 | } | |
187 | delete X[ind]; | |
188 | } | |
189 | cout << endl << "Измененный текст:" << endl; | |
190 | for (int k = 0; k < m - 1; k++) { | |
191 | cout << *X[k] << endl; | |
192 | fout << *X[k]; | |
193 | } | |
194 | fin.close(); | |
195 | fout.close(); | |
196 | ||
197 | remove("Text.txt"); | |
198 | rename("updated_Text.txt", "Text.txt"); | |
199 | } | |
200 | } | |
201 | ||
202 | void clearFile() { //очистка файла | |
203 | cout << "Файл успешно очищен! \n"; | |
204 | ofstream fclear("Text.txt", ios_base::trunc); | |
205 | fclear.close(); | |
206 | } |