Advertisement
Vanya_Shestakov

laba2.4 (C++)

Oct 11th, 2020 (edited)
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. int inputOrderFromConsole();
  6. using namespace std;
  7.  
  8. string inputPath()
  9. {
  10.     bool isIncorrect;
  11.     string path;
  12.     do
  13.     {
  14.         isIncorrect = false;
  15.         cin >> path;
  16.         ifstream file(path);
  17.         if (!file.is_open())
  18.         {
  19.             cout << "Файл не найден! Введите абсолютную ссылку на файл\n";
  20.             isIncorrect = true;
  21.         }
  22.     } while (isIncorrect);
  23.     return path;
  24. }
  25.  
  26. int inputOrderFromFile(string path)
  27. {
  28.     bool isIncorrect;
  29.     int order;
  30.     ifstream fin(path);
  31.  
  32.     cout << "Порядок матрицы считывается из файла...\n";
  33.    
  34.     fin >> order;
  35.     if (order < 2 || order > 6)
  36.     {
  37.         order = inputOrderFromConsole();
  38.     }
  39.     fin.close();
  40.     return order;
  41. }
  42.  
  43. int inputOrderFromConsole()
  44. {
  45.     cout << "В вашем файле вписан некорректный порядок матрицы. Введите порядок из косоли!\n";
  46.     bool isIncorrect;
  47.     int order;
  48.     do
  49.     {
  50.         isIncorrect = false;
  51.         cin >> order;
  52.  
  53.         if (order < 2 || order > 6)
  54.         {
  55.             cout << "Некорректные данные. Введите порядок из диапазона [2;6]\n";
  56.             isIncorrect = true;
  57.         }
  58.     } while (isIncorrect);
  59.     return order;
  60. }
  61.  
  62. void inputMatrixFromFile(double** matrix, int order, string path)
  63. {
  64.     ifstream fin(path);
  65.     int temp;
  66.     fin >> temp;
  67.  
  68.     cout << "Матрица считывается из файла...\n";
  69.     for (int i = 0; i < order; i++)
  70.     {
  71.         for (int j = 0; j < order; j++)
  72.         {
  73.             fin >> matrix[i][j];
  74.         }
  75.     }
  76.     fin.close();
  77. }
  78.  
  79. void printMatrix(double** matrix, int order)
  80. {
  81.     for (int i = 0; i < order; i++)
  82.     {
  83.         cout << endl;
  84.         for (int j = 0; j < order; j++)
  85.         {
  86.             cout << matrix[i][j] << "  ";
  87.         }
  88.     }
  89.     cout << endl;
  90. }
  91.  
  92. void doInsertionSort(double** matrix, int order)
  93. {
  94.     for (int i = 0; i < order; i++)
  95.     {
  96.         for (int j = 0; j < order; j++)
  97.         {
  98.             double current = matrix[i][j];
  99.             int k = j;
  100.  
  101.             while (k > 0 && current < matrix[i][k - 1])
  102.             {
  103.                 matrix[i][k] = matrix[i][k - 1];
  104.                 k--;
  105.             }
  106.             matrix[i][k] = current;
  107.         }
  108.     }
  109. }
  110.  
  111. void doBubbleSortForStrings(double** matrix, int order)
  112. {
  113.     for (int k = 0; k < order; k++)
  114.     {
  115.         for (int i = 0; i < order - 1; i++)
  116.         {
  117.             if (matrix[i][order - 1] > matrix[i + 1][order - 1])
  118.             {
  119.                 for (int j = 0; j < order; j++)
  120.                 {
  121.                     double temp = matrix[i][j];
  122.                     matrix[i][j] = matrix[i + 1][j];
  123.                     matrix[i + 1][j] = temp;
  124.                 }
  125.             }
  126.         }
  127.     }
  128. }
  129.  
  130. void outputToFile(double** matrix, int order, string path)
  131. {
  132.     ofstream fout(path);
  133.     for (int i = 0; i < order; i++)
  134.     {
  135.         fout << endl;
  136.         for (int j = 0; j < order; j++)
  137.         {
  138.             fout << matrix[i][j] << "  ";
  139.         }
  140.     }
  141.     fout.close();
  142.     cout << "Данные успешно записаны в файл!";
  143. }
  144.  
  145. int main()
  146. {
  147.     system("color F0");
  148.     setlocale(LC_ALL, "Russian");
  149.  
  150.     cout << "Дана матрица A порядка n. \nПрограмма отсортировывает строки матрицы\nв порядке возрастания наибольших элементов в каждой строке.\n" << endl;
  151.  
  152.     cout << "Введите абсолютную ссылку на файл ввода\n";
  153.     string pathInput = inputPath();
  154.     cout << "Введите абсолютную ссылку на файл вывода\n";
  155.     string pathOutput = inputPath();
  156.  
  157.     int order = inputOrderFromFile(pathInput);
  158.     double** matrix = new double* [order];
  159.     for (int i = 0; i < order; i++)
  160.     {
  161.         matrix[i] = new double[order];
  162.     }
  163.     inputMatrixFromFile(matrix, order, pathInput);
  164.     cout << "Исходная матрица:";
  165.     printMatrix(matrix, order);
  166.  
  167.     doInsertionSort(matrix, order);
  168.     cout << "Отсортированная матрица:";
  169.     printMatrix(matrix, order);
  170.  
  171.     outputToFile(matrix, order, pathOutput);
  172.  
  173.     for (int i = 0; i < order; i++)
  174.     {
  175.         delete[] matrix[i];
  176.     }
  177.     delete[] matrix;
  178. }
  179.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement