Advertisement
kxcoze

satie_as_usual

Nov 2nd, 2020 (edited)
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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, int &length);
  20. void deleteStr(Text &X, int &length);
  21. void clearFile();
  22.  
  23. int main() {
  24.     SetConsoleCP(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.             system("cls");
  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 << "Кол-во строк: " << n << endl;
  62.            
  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. }
  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, int &length) {
  128.     system("cls");
  129.     ifstream fin("Text.txt");
  130.     if (fin.peek() == EOF) cout << "Ваш файл пуст! Введите текст.\n"; // если первый символ конец файла
  131.     else {
  132.         cout << "Введите длину строки: ";
  133.         cin >> length;
  134.         string text;
  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.             c += length;
  141.             X[i] = new string;
  142.             *X[i] = TX;
  143.             i++;
  144.         }
  145.         for (int g = 0; g < i; g++) {
  146.             for (int j = 0; j < i; j++) {
  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.     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.         cout << "Изначальный текст:" << endl;
  168.         while (c < text.length()) {
  169.             cout << m << ". " << text.substr(c, length) << endl;
  170.             c += length;
  171.             m += 1;
  172.         }
  173.         int ind;
  174.         cout << "Введите индекс строки, которую хотите удалить(считать с нуля):" << endl;
  175.         cin >> ind;
  176.         if (ind+1 > m) {
  177.             cout << "Введен неверный индекс строки!" << 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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement