Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- int inputOrderFromConsole();
- using namespace std;
- string inputPath()
- {
- bool isIncorrect;
- string path;
- do
- {
- isIncorrect = false;
- cin >> path;
- ifstream file(path);
- if (!file.is_open())
- {
- cout << "Файл не найден! Введите абсолютную ссылку на файл\n";
- isIncorrect = true;
- }
- } while (isIncorrect);
- return path;
- }
- int inputOrderFromFile(string path)
- {
- bool isIncorrect;
- int order;
- ifstream fin(path);
- cout << "Порядок матрицы считывается из файла...\n";
- fin >> order;
- if (order < 2 || order > 6)
- {
- order = inputOrderFromConsole();
- }
- fin.close();
- return order;
- }
- int inputOrderFromConsole()
- {
- cout << "В вашем файле вписан некорректный порядок матрицы. Введите порядок из косоли!\n";
- bool isIncorrect;
- int order;
- do
- {
- isIncorrect = false;
- cin >> order;
- if (order < 2 || order > 6)
- {
- cout << "Некорректные данные. Введите порядок из диапазона [2;6]\n";
- isIncorrect = true;
- }
- } while (isIncorrect);
- return order;
- }
- void inputMatrixFromFile(double** matrix, int order, string path)
- {
- ifstream fin(path);
- int temp;
- fin >> temp;
- cout << "Матрица считывается из файла...\n";
- for (int i = 0; i < order; i++)
- {
- for (int j = 0; j < order; j++)
- {
- fin >> matrix[i][j];
- }
- }
- fin.close();
- }
- void printMatrix(double** matrix, int order)
- {
- for (int i = 0; i < order; i++)
- {
- cout << endl;
- for (int j = 0; j < order; j++)
- {
- cout << matrix[i][j] << " ";
- }
- }
- cout << endl;
- }
- void doInsertionSort(double** matrix, int order)
- {
- for (int i = 0; i < order; i++)
- {
- for (int j = 0; j < order; j++)
- {
- double current = matrix[i][j];
- int k = j;
- while (k > 0 && current < matrix[i][k - 1])
- {
- matrix[i][k] = matrix[i][k - 1];
- k--;
- }
- matrix[i][k] = current;
- }
- }
- }
- void doBubbleSortForStrings(double** matrix, int order)
- {
- for (int k = 0; k < order; k++)
- {
- for (int i = 0; i < order - 1; i++)
- {
- if (matrix[i][order - 1] > matrix[i + 1][order - 1])
- {
- for (int j = 0; j < order; j++)
- {
- double temp = matrix[i][j];
- matrix[i][j] = matrix[i + 1][j];
- matrix[i + 1][j] = temp;
- }
- }
- }
- }
- }
- void outputToFile(double** matrix, int order, string path)
- {
- ofstream fout(path);
- for (int i = 0; i < order; i++)
- {
- fout << endl;
- for (int j = 0; j < order; j++)
- {
- fout << matrix[i][j] << " ";
- }
- }
- fout.close();
- cout << "Данные успешно записаны в файл!";
- }
- int main()
- {
- system("color F0");
- setlocale(LC_ALL, "Russian");
- cout << "Дана матрица A порядка n. \nПрограмма отсортировывает строки матрицы\nв порядке возрастания наибольших элементов в каждой строке.\n" << endl;
- cout << "Введите абсолютную ссылку на файл ввода\n";
- string pathInput = inputPath();
- cout << "Введите абсолютную ссылку на файл вывода\n";
- string pathOutput = inputPath();
- int order = inputOrderFromFile(pathInput);
- double** matrix = new double* [order];
- for (int i = 0; i < order; i++)
- {
- matrix[i] = new double[order];
- }
- inputMatrixFromFile(matrix, order, pathInput);
- cout << "Исходная матрица:";
- printMatrix(matrix, order);
- doInsertionSort(matrix, order);
- cout << "Отсортированная матрица:";
- printMatrix(matrix, order);
- outputToFile(matrix, order, pathOutput);
- for (int i = 0; i < order; i++)
- {
- delete[] matrix[i];
- }
- delete[] matrix;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement