Advertisement
lithie_oce

lab 2.4 c++

Nov 1st, 2023
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.27 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int choiceCheck() {
  8.     int choice;
  9.     bool isIncorrect;
  10.     do {
  11.         isIncorrect = true;
  12.         cin >> choice;
  13.         if (cin.fail() || (cin.get() != '\n')) {
  14.             cout << "Error! Input a number" << endl;
  15.             cin.clear();
  16.             while (cin.get() != '\n');
  17.         } else {
  18.             cin.clear();
  19.             if (choice > 0 && choice < 3) {
  20.                 isIncorrect = false;
  21.             } else {
  22.                 cout << "Error! Input 1 or 2" << endl;
  23.             }
  24.         }
  25.  
  26.     } while (isIncorrect);
  27.     return choice;
  28. }
  29.  
  30. int inputCheck() {
  31.     bool isIncorrect;
  32.     int n;
  33.     cout << "Input n" << endl;
  34.     do {
  35.  
  36.         isIncorrect = true;
  37.         cin >> n;
  38.         if (cin.fail() || (cin.get() != '\n')) {
  39.             cout << "Error! Input a number" << endl;
  40.             cin.clear();
  41.             while (cin.get() != '\n');
  42.         } else {
  43.             cin.clear();
  44.             if (n > 1) {
  45.                 isIncorrect = false;
  46.             } else {
  47.                 cout << "Error! Input a number greater than 1" << endl;
  48.             }
  49.         }
  50.     } while (isIncorrect);
  51.     return n;
  52. }
  53.  
  54. int *inputCheckArray(int n, int *arr) {
  55.     int i;
  56.     bool isIncorrect;
  57.     for (i = 0; i < n; i++) {
  58.         do {
  59.             isIncorrect = true;
  60.             cin >> arr[i];
  61.             if (cin.fail() || (cin.get() != '\n')) {
  62.                 cout << "Error! Input a number" << endl;
  63.                 cin.clear();
  64.                 while (cin.get() != '\n');
  65.             } else {
  66.                 isIncorrect = false;
  67.             }
  68.         } while (isIncorrect);
  69.     }
  70.     return arr;
  71. }
  72.  
  73. string checkInputFilePath() {
  74.     string path;
  75.     bool isInCorrect;
  76.     do {
  77.         cout << "Input path to the file:\n";
  78.         isInCorrect = false;
  79.         cin >> path;
  80.         ifstream fin(path);
  81.         if (!fin.is_open()) {
  82.             cout << "Could not open the file" << endl;
  83.             isInCorrect = true;
  84.         } else {
  85.             fin.close();
  86.         }
  87.  
  88.     } while (isInCorrect);
  89.     return path;
  90. }
  91.  
  92.  
  93. int *fileCheckArray(int &n, int *arr) {
  94.     string path;
  95.     bool isIncorrect;
  96.     int i;
  97.     do {
  98.         path = checkInputFilePath();
  99.         ifstream fin(path);
  100.         isIncorrect = false;
  101.         fin >> n;
  102.         if (fin.fail()) {
  103.             cout << "The data is incorrect" << endl;
  104.             isIncorrect = true;
  105.         }
  106.         if (!isIncorrect && (n < 2)) {
  107.             cout << "The data is incorrect" << endl;
  108.             isIncorrect = true;
  109.         }
  110.         if (!isIncorrect) {
  111.             arr = new int [n];
  112.             for (i = 0; i < n; i++) {
  113.                 fin >> arr[i];
  114.                 if (fin.fail()) {
  115.                     cout << "The data is incorrect" << endl;
  116.                     isIncorrect = true;
  117.                 }
  118.             }
  119.             if (!fin.eof()) {
  120.                 cout << "The data is incorrect" << endl;
  121.                 isIncorrect = true;
  122.             }
  123.         }
  124.         fin.close();
  125.     } while (isIncorrect);
  126.     return arr;
  127. }
  128.  
  129.  
  130. int *inputChoice(int &n, int *arr) {
  131.     int choice;
  132.  
  133.     cout << "Choose input option:\n1.Input through console\n2.Input through file" << endl;
  134.     choice = choiceCheck();
  135.     if (choice == 1) {
  136.         n = inputCheck();
  137.         arr = new int[n];
  138.         arr = inputCheckArray(n, arr);
  139.     } else {
  140.         arr = fileCheckArray(n, arr);
  141.     }
  142.     return arr;
  143. }
  144.  
  145. int *sum(int n, int *arr, int *sumArr) {
  146.     int i;
  147.     for (i = 0; i < n; i++) {
  148.         sumArr[i] = arr[i] + arr[i + 1];
  149.     }
  150.     return sumArr;
  151. }
  152.  
  153. int findMax(int n, int *sumArr) {
  154.     int max, i;
  155.     max = sumArr[0];
  156.     for (i = 0; i < n; i++) {
  157.         if (sumArr[i] > max) {
  158.             max = sumArr[i];
  159.         }
  160.     }
  161.     return max;
  162. }
  163.  
  164.  
  165. string checkOutputFilePath() {
  166.     string path;
  167.     bool isIncorrect;
  168.     cout
  169.             << "Input file path and the name of the file for\nexample С:\\Projects\\Number\\FileName.txt. If the\nfile does not exist, then it will be created\nautomatically in the root folder of the program:\n";
  170.     isIncorrect = false;
  171.     cin >> path;
  172.     ifstream fin(path);
  173.     if (!fin.is_open()) {
  174.         cout << "Could not open the file or it does not exist" << endl;
  175.         isIncorrect = true;
  176.     } else {
  177.         fin.close();
  178.     }
  179.     if (isIncorrect) {
  180.         cout << "File will be created in the root folder of the program\n";
  181.         path = "Result.txt";
  182.     }
  183.     return path;
  184. }
  185.  
  186. void outputMax(int max) {
  187.     cout << max << endl;
  188. }
  189.  
  190. void outputFile(int max) {
  191.     string path;
  192.     path = checkOutputFilePath();
  193.     ofstream fout(path);
  194.     fout << max << endl;
  195.     fout.close();
  196. }
  197.  
  198. void outputChoice(int &max) {
  199.     int choice;
  200.     cout << "Choose output option:\n1.Output through console\n2.Output through file" << endl;
  201.     choice = choiceCheck();
  202.     if (choice == 1) {
  203.         outputMax(max);
  204.     } else {
  205.         outputFile(max);
  206.     }
  207. }
  208.  
  209.  
  210. int main() {
  211.     int n, max;
  212.     int *arr;
  213.     int *sumArr;
  214.     arr = inputChoice(n, arr);
  215.     n--;
  216.     sumArr = new int[n];
  217.     sumArr = sum(n, arr, sumArr);
  218.     max = findMax(n, sumArr);
  219.     outputChoice(max);
  220.     return 0;
  221. }
  222.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement