Filage

lab3_1

Nov 21st, 2022 (edited)
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <algorithm>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8.  
  9. int takeChoise() {
  10.     const string ERROR_CHOISE = "Проверьте корректность введнных данных!\n";
  11.     bool isIncorrect;
  12.     int num;
  13.     do {
  14.         isIncorrect = false;
  15.         cin >> num;
  16.         if (cin.fail()) {
  17.             isIncorrect = true;
  18.             cout << ERROR_CHOISE;
  19.             cin.clear();
  20.             while (cin.get() != '\n');
  21.         }
  22.         if (!isIncorrect && cin.get() != '\n') {
  23.             cin.clear();
  24.             while (cin.get() != '\n');
  25.             cout << ERROR_CHOISE;
  26.             isIncorrect = true;
  27.         }
  28.         if (!isIncorrect && (num < 0 || num > 1)) {
  29.             isIncorrect = true;
  30.             cout << ERROR_CHOISE;
  31.         }
  32.     } while (isIncorrect);
  33.     return num;
  34. }
  35.  
  36. string wayToFile() {
  37.     fstream checkFile;
  38.     string way;
  39.     bool isIncorrect;
  40.     do {
  41.         isIncorrect = false;
  42.         cout << "Введите путь к файлу\n";
  43.         cin >> way;
  44.         checkFile.open(way);
  45.         if (!checkFile.is_open()) {
  46.             cout << "Проверьте правильность и нахождение вашего файла по заданному пути\n";
  47.             isIncorrect = true;
  48.         }
  49.         else {
  50.             isIncorrect = false;
  51.         }
  52.         checkFile.close();
  53.     } while (isIncorrect);
  54.     return way;
  55. }
  56.  
  57. int sortSpace(string text, string*& arrayOfSymbols) {
  58.     int i = 0;
  59.     int checkForLoop = 0;
  60.     int k = 0;
  61.     while (i < text.length()) {
  62.         checkForLoop = 0;
  63.         while (isalpha((unsigned char)text[i]) && i < text.length()) {
  64.             arrayOfSymbols[k] += text[i];
  65.             i++;
  66.             checkForLoop++;
  67.         }
  68.         if (checkForLoop != 0) {
  69.             k++;
  70.         }
  71.         checkForLoop = 0;
  72.         while (!isalpha((unsigned char)text[i]) && i < text.length()) {
  73.             arrayOfSymbols[k] += text[i];
  74.             i++;
  75.             checkForLoop++;
  76.         }
  77.         if (checkForLoop != 0) {
  78.             k++;
  79.         }
  80.     }
  81.     return k;
  82. }
  83.  
  84. int takeFromConsole(string*& arrayOfSymbols) {
  85.     string text;
  86.     getline(cin, text);
  87.     int k = sortSpace(text, arrayOfSymbols);
  88.     return k;
  89. }
  90.  
  91. int takeFromFile(string*& arrayOfSymbols) {
  92.     fstream file;
  93.     string fileName = wayToFile();
  94.     file.open(fileName);
  95.     string text;
  96.     if (!file.bad()) {
  97.         getline(file, text, '\t');
  98.     }
  99.     file.close();
  100.     int k = sortSpace(text, arrayOfSymbols);
  101.     return k;
  102. }
  103.  
  104. void conventText(string*& arrayOfSymbols, int& k) {
  105.     int i = 0;
  106.     while (arrayOfSymbols[i] == " ") {
  107.         i++;
  108.     }
  109.     for (; i < k; i += 2) {
  110.         arrayOfSymbols[i] = "(" + arrayOfSymbols[i] + ")";
  111.         i += 2;
  112.         if (i < k) {
  113.             transform(arrayOfSymbols[i].begin(), arrayOfSymbols[i].end(), arrayOfSymbols[i].begin(), ::toupper);
  114.         }
  115.     }
  116. }
  117.  
  118. void resultInConsole(string* arrayOfSymbols, int k) {
  119.     for (int i = 0; i < k; i++) {
  120.         cout << arrayOfSymbols[i];
  121.     }
  122. }
  123.  
  124. void resultInFile(string* arrayOfSymbols, int k) {
  125.     fstream file;
  126.     string fileName = wayToFile();
  127.     file.open(fileName);
  128.     if (!file.bad()) {
  129.         for (int i = 0; i < k; i++) {
  130.             file << arrayOfSymbols[i];
  131.         }
  132.     }
  133.     file.close();
  134. }
  135.  
  136. int choiseEnter(string*& arrayOfSymbols) {
  137.     cout << "Выберете способ ввода. \n 1. Введите 1 для использования консоли. \n 2. Введите 0 для использования файла.\n";
  138.     int choise = takeChoise();
  139.     int k;
  140.     if (choise == 1) {
  141.         k = takeFromConsole(arrayOfSymbols);
  142.         conventText(arrayOfSymbols, k);
  143.     }
  144.     else {
  145.         k = takeFromFile(arrayOfSymbols);
  146.         conventText(arrayOfSymbols, k);
  147.     }
  148.     return k;
  149. }
  150.  
  151. void choiseResult(string* arrayOfSymbols, int k) {
  152.     cout << "Выберете способ вывода результата. \n 1. Введите 1 для использования консоли. \n 2. Введите 0 для использования файла.\n";
  153.     int choise = takeChoise();
  154.     if (choise) {
  155.         resultInConsole(arrayOfSymbols, k);
  156.     }
  157.     else {
  158.         resultInFile(arrayOfSymbols, k);
  159.     }
  160. }
  161.  
  162. int main()
  163. {
  164.     setlocale(LC_ALL, "Rus");
  165.     SetConsoleOutputCP(1251);
  166.     SetConsoleCP(1251);
  167.     string* arrayOfSymbols = new string[1000000];
  168.     int k = choiseEnter(arrayOfSymbols);
  169.     choiseResult(arrayOfSymbols, k);
  170. }
Advertisement
Add Comment
Please, Sign In to add comment