daily pastebin goal
81%
SHARE
TWEET

Untitled

a guest Jun 14th, 2018 53 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <fstream>
  3. #include <windows.h>
  4. #include <cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. char inp[50], inp_1[50], inp_2[50]; //Пути к матрицам
  9. char action; //Действие между матрицами
  10. int n1, m1, n2, m2, mul, D; //Размерность матриц, переменная
  11.  
  12. int **mas_1 = new int*[n1]; //Динамический массив первой матрицы
  13. int **mas_2 = new int*[n2]; //Динамический массив второй матрицы
  14. char out [50] = {'D',':','\\','m','a','t','r','i','x','_','0','.','t','x','t'}; //Путь к матрицам
  15. int x = 0; //Счетчик действий
  16.  
  17. void Sum(){ //Функция поиска суммы матриц
  18.     out [10] = x + '0'; //Присваиваем индивидуальный символ в путь
  19.     ofstream output(out); //Открываем файл для записи
  20.     if (n1 == n2 and m1 == m2){ //Если размер матриц совпадает...
  21.         output << n1 << " " << m1 << endl; //Записываем в файл размерность массива
  22.         for(int i = 0; i < n1; i++){
  23.             output << endl; //Переходим на следующую строку записи
  24.             for(int j = 0; j < m1; j++){
  25.                 mas_1[i][j] = mas_1[i][j] + mas_2[i][j]; //Находим сумму элемента
  26.                 output << mas_1[i][j] << " "; //Записываем ответ в файл
  27.             }
  28.         }
  29.     }
  30.     else{ //Если размеры матриц разные...
  31.         output << "Найти сумму невозможно, так как матрицы разных размеров!"; //Записываем сообщение в файл
  32.     }
  33.     output.close(); //Закрываем файл
  34.     x = x++;
  35. }
  36.  
  37. void Difference(){ //Функция поиска разницы матриц
  38.     out [10] = x + '0'; //Присваиваем индивидуальный символ в путь
  39.     ofstream output(out); //Открываем файл для записи
  40.     if (n1 == n2 and m1 == m2){ //Если размер матриц совпадает...
  41.         output << n1 << " " << m1 << endl; //Записываем в файл размерность массива
  42.         for(int i = 0; i < n1; i++){
  43.             output << endl; //Переходим на следующую строку записи
  44.             for(int j = 0; j < m1; j++){
  45.                 mas_1[i][j] = mas_1[i][j] - mas_2[i][j]; //Находим разницу элемента
  46.                 output << mas_1[i][j] << " "; //Записываем ответ в файл
  47.             }
  48.         }
  49.     }
  50.     else{ //Если размеры матриц разные...
  51.         output << "Найти разницу невозможно, так как матрицы разных размеров!"; //Записываем сообщение в файл
  52.     }
  53.     output.close(); //Закрываем файл
  54.     x = x++;
  55. }
  56.  
  57. void Multiplication(){ //Функция поиска произведения матриц
  58.     out [10] = x + '0'; //Присваиваем индивидуальный символ в путь
  59.     ofstream output(out); //Открываем файл для записи
  60.     if (m1 == n2){
  61.         output << n1 << " " << m2 << endl; //Записываем в файл размерность массива
  62.         for(int i = 0; i < n1; i++){
  63.             output << endl; //Переходим на следующую строку записи
  64.             for(int j = 0; j < m2; j++){
  65.                 mul = 0; //Обнуляем переменную
  66.                 for(int k = 0; k < m1; k++){
  67.                     mul = mul + mas_1[i][k]*mas_2[k][j]; //Находим произведение элемента
  68.                 }
  69.                 output << mul << " "; //Записываем ответ в файл
  70.             }
  71.         }
  72.     }
  73.     else{
  74.         output << "Найти произведение невозможно, так как матрицы разных размеров!"; //Записываем сообщение в файл
  75.     }
  76.     output.close(); //Закрываем файл
  77.     x = x++;
  78. }
  79.  
  80. void Determinant(){ //Функция поиска детерминанта матрицы
  81.     if (n1 == 1 and m1 ==1){ //Детерминант для матрицы 1х1
  82.         D = mas_1[0][0];
  83.     }
  84.     if (n1 == 2 and m1 ==2){ //Детерминант для матрицы 2х2
  85.         D = mas_1[0][0] * mas_1[1][1] - mas_1[0][1] * mas_1[1][0];
  86.     }
  87.     if (n1 == 3 and m1 ==3){ //Детерминант для матрицы 3х3
  88.         D = mas_1[0][0] * mas_1[1][1] * mas_1[2][2] + mas_1[0][1] * mas_1[1][2] * mas_1[2][0]
  89.         + mas_1[0][2] * mas_1[1][0] * mas_1[2][1] - mas_1[0][2] * mas_1[1][1] * mas_1[2][0]
  90.         - mas_1[0][1] * mas_1[1][0] * mas_1[2][2] - mas_1[0][0] * mas_1[1][2] * mas_1[2][1];
  91.     }
  92. }
  93.  
  94. void Input_Output(){ //Функция ввода/вывода
  95.     cout << "Введите путь к входному файлу:" << endl;
  96.     cin >> inp; //Ввод пути к файлу
  97.     ifstream file(inp); //Открываем файл для чтения
  98.     if (!file.is_open()){ //Если файл не открыт
  99.         cout << "Файл не найден!" << endl;
  100.     }
  101.     else{
  102.         ofstream otvet("D:\\Mat_otvet.txt"); //Открываем выходной файл для записи
  103.         while (!file.eof()) { //Пока не закончился файл...
  104.             file>>inp_1; //Считываем путь к первой матрице
  105.             ifstream mat_1(inp_1); //Открываем файл
  106.             if (!mat_1.is_open()){ //Если файл не открыт...
  107.                 cout << "Файл <" << inp_1 << "> не найден!" << endl;
  108.             }
  109.             else{
  110.                 mat_1>>n1; //Считываем размеры матрицы
  111.                 mat_1>>m1; //Считываем размеры матрицы
  112.                 for(int i = 0; i < n1; i++){
  113.                     mas_1[i] = new int[m1]; //Строим двумерный массив
  114.                     for(int j = 0; j < m1; j++){
  115.                         mat_1>>mas_1[i][j]; //Заполняем массив с файла
  116.                     }
  117.                 }
  118.             }
  119.             mat_1.close(); //Закрываем файл
  120.             file>>action; //Считываем действие
  121.             if (action == '+' or action == '-' or action == '*'){
  122.                 file>>inp_2; //Считываем путь ко второй матрице
  123.                 ifstream mat_2(inp_2); //И открываем ее
  124.                 if (!mat_2.is_open()){ //Если файл не открыт...
  125.                     cout << "Файл <" << inp_2 << "> не найден!" << endl;
  126.                 }
  127.                 else{
  128.                     mat_2>>n2; //Считываем размеры матрицы
  129.                     mat_2>>m2; //Считываем размеры матрицы
  130.                     for(int i = 0; i < n2; i++){
  131.                         mas_2[i] = new int[m2]; //Строим двумерный массив
  132.                         for(int j = 0; j < m2; j++){
  133.                             mat_2>>mas_2[i][j]; //Заполняем массив с файла
  134.                         }
  135.                     }
  136.                 }
  137.                 mat_2.close(); //Закрываем файл
  138.             }
  139.             if (action == '+'){ //Если действие +
  140.                 otvet << inp_1 << " + " << inp_2 << " = "; //Записываем ответ в файл
  141.                 Sum(); //Используем функцию
  142.                 otvet << out << endl; //Записываем ответ в файл
  143.             }
  144.             if (action == '-'){ //Если действие -
  145.                 otvet << inp_1 << " - " << inp_2 << " = "; //Записываем ответ в файл
  146.                 Difference(); //Используем функцию
  147.                 otvet << out << endl; //Записываем ответ в файл
  148.             }
  149.             if (action == '*'){ //Если действие *
  150.                 otvet << inp_1 << " * " << inp_2 << " = "; //Записываем ответ в файл
  151.                 Multiplication(); //Используем функцию
  152.                 otvet << out << endl; //Записываем ответ в файл
  153.             }
  154.             if (action == 'D'){
  155.                 otvet << inp_1 << " D = "; //Записываем ответ в файл
  156.                 Determinant();
  157.                 if (n1 != m1){
  158.                     otvet << "Детерминант невозможно найти, так как матрицы разного размера!" << endl;
  159.                 }
  160.                 else{
  161.                     otvet << D << endl;
  162.                 }
  163.             }
  164.         }
  165.         otvet.close(); //Закрываем выходной файл
  166.     }
  167.     file.close(); //Закрываем входной файл
  168. }
  169.  
  170. int main()
  171. {
  172.     setlocale(LC_ALL, "Russian"); //Подключаем Русский язык
  173.  
  174.     Input_Output(); //Используем функцию
  175.     cout << "Работа завершена...";
  176. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top