Advertisement
venik2405

lab2_4

Nov 19th, 2020
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.07 KB | None | 0 0
  1. #include <fstream>
  2. #include <string>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. void chooseInput(int& inputType)
  8. {
  9.     bool incorrect;
  10.     string line;
  11.     do
  12.     {
  13.         incorrect = false;
  14.         cout << "Do you want to input from file? (y/n)" << endl;
  15.         cin >> line;
  16.         if (line != "Y" && line != "y" && line != "N" && line != "n")
  17.         {
  18.             incorrect = true;
  19.             cout << "Enter valid answer" << endl;
  20.         }
  21.     } while (incorrect);
  22.     if (line == "N" || line == "n")
  23.         inputType = 1;
  24.     else
  25.         inputType = 0;
  26. }
  27.  
  28. string inputFileLocation()
  29. {
  30.     bool incorrect = false;
  31.     string location = "";
  32.     cout << "Enter file location:" << endl;
  33.     cin >> location;
  34.     ifstream file(location);
  35.     if (file.is_open())
  36.     {
  37.         cout << "File opened successfully\n";
  38.         return location;
  39.     }
  40.     else
  41.     {
  42.         cout << "File with this location is not found" << endl;
  43.     }
  44.     file.close();
  45. }
  46.  
  47. void getArrayFromFile(int** arrays, int& size)
  48. {
  49.     bool incorrect = false;
  50.     int j;
  51.     string line;
  52.     ifstream file(inputFileLocation());
  53.     file.clear();
  54.     file.seekg(0, ios::beg);
  55.     for (int i = 0; i < size; i++)
  56.     {
  57.         for (j = 0; j < size; j++)
  58.         {
  59.             file >> arrays[i][j];
  60.         }
  61.     }
  62.     getline(file, line, '\n');
  63.     file.close();
  64. }
  65.  
  66. void outputToFile(int** arrays, int& size)
  67. {
  68.     ofstream file(inputFileLocation());
  69.     for (int i = 0; i < size; i++)
  70.     {
  71.         for (int j = 0; j < 3; j++)
  72.         {
  73.             file << arrays[i][j] << endl;
  74.         }
  75.         cout << endl;
  76.     }
  77. }
  78.  
  79. void getArrayFromConsole(int** array, int& size)
  80. {
  81.     int j;
  82.     cout << "Enter the matrix\n";
  83.     for (int i = 0; i < size; i++)
  84.     {
  85.         for (j = 0; j < size; j++)
  86.         {
  87.             cout << "\nenter the element number [" << i + 1 << "|" << j + 1 << "]: ";
  88.             cin >> array[i][j];
  89.         }
  90.     }
  91. }
  92.  
  93. int dimensionInput()
  94. {
  95.     const int MAX_VALUE = 5;
  96.     const int MIN_VALUE = 1;
  97.     int size = 0;
  98.     bool isIncorrect;
  99.     do
  100.     {
  101.         cin >> size;
  102.         isIncorrect = false;
  103.         if (size < MIN_VALUE || size > MAX_VALUE)
  104.         {
  105.             isIncorrect = true;
  106.             cout << "Please enter a natural value less than six\n";
  107.         }
  108.     } while (isIncorrect);
  109.     return size;
  110. }
  111.  
  112. void deleteZeroStrings(int** arrays, int& size, int previousSize)
  113. {
  114.     int i = 0;
  115.     int j;
  116.     int prexSize = size;
  117.     bool zeroFounded;
  118.     while (i < size) {
  119.         zeroFounded = false;
  120.         j = 0;
  121.         while ((j < previousSize & (!zeroFounded))) {
  122.             if (arrays[i][j] == 0) {
  123.                 zeroFounded = true;
  124.                 for (int p = i; p < size - 1; p++) {
  125.                     arrays[p] = arrays[p + 1];
  126.                 }
  127.                 size--;
  128.                 i--;
  129.             }
  130.             j++;
  131.         }
  132.         i++;
  133.     }
  134. }
  135.  
  136. void print(int** arrays, int& size , int previousSize)
  137. {
  138.     for (int i = 0; i < size; i++)
  139.     {
  140.         for (int j = 0; j < previousSize; j++)
  141.             cout << arrays[i][j] << " ";
  142.         cout << endl;
  143.     }
  144. }
  145.  
  146. int main()
  147. {
  148.     setlocale(LC_ALL, "RUSSIAN");
  149.     cout << "Данная программа удаляет строки массива , содержащие нулевые элементы.\n";
  150.     int chosenInput;
  151.     chooseInput(chosenInput);
  152.     cout << "Enter the matrix size\n";
  153.     int size = dimensionInput();
  154.     int** matrix = new int* [size];
  155.     for (int i = 0; i < size; i++)
  156.         matrix[i] = new int[size];
  157.     if (chosenInput == 0)
  158.     {
  159.         getArrayFromFile(matrix, size);
  160.     }
  161.     else
  162.     {
  163.         getArrayFromConsole(matrix, size);
  164.     }
  165.     cout << endl;
  166.     cout << "Original matrix" << endl;
  167.     int previousSize = size;
  168.     print(matrix, size, previousSize);
  169.     double* variablesArray = new double[size];
  170.     deleteZeroStrings(matrix, size, previousSize);
  171.     cout << endl << "Modified matrix" << endl;
  172.     print(matrix, size, previousSize);
  173.     outputToFile(matrix, size);
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement