Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <windows.h>
- #include <cstdlib>
- using namespace std;
- char inp[50], inp_1[50], inp_2[50]; //Пути к матрицам
- char action; //Действие между матрицами
- int n1, m1, n2, m2, mul, D; //Размерность матриц, переменная
- int **mas_1 = new int*[n1]; //Динамический массив первой матрицы
- int **mas_2 = new int*[n2]; //Динамический массив второй матрицы
- char out [50] = {'D',':','\\','m','a','t','r','i','x','_','0','.','t','x','t'}; //Путь к матрицам
- int x = 0; //Счетчик действий
- void Sum(){ //Функция поиска суммы матриц
- out [10] = x + '0'; //Присваиваем индивидуальный символ в путь
- ofstream output(out); //Открываем файл для записи
- if (n1 == n2 and m1 == m2){ //Если размер матриц совпадает...
- output << n1 << " " << m1 << endl; //Записываем в файл размерность массива
- for(int i = 0; i < n1; i++){
- output << endl; //Переходим на следующую строку записи
- for(int j = 0; j < m1; j++){
- mas_1[i][j] = mas_1[i][j] + mas_2[i][j]; //Находим сумму элемента
- output << mas_1[i][j] << " "; //Записываем ответ в файл
- }
- }
- }
- else{ //Если размеры матриц разные...
- output << "Найти сумму невозможно, так как матрицы разных размеров!"; //Записываем сообщение в файл
- }
- output.close(); //Закрываем файл
- x = x++;
- }
- void Difference(){ //Функция поиска разницы матриц
- out [10] = x + '0'; //Присваиваем индивидуальный символ в путь
- ofstream output(out); //Открываем файл для записи
- if (n1 == n2 and m1 == m2){ //Если размер матриц совпадает...
- output << n1 << " " << m1 << endl; //Записываем в файл размерность массива
- for(int i = 0; i < n1; i++){
- output << endl; //Переходим на следующую строку записи
- for(int j = 0; j < m1; j++){
- mas_1[i][j] = mas_1[i][j] - mas_2[i][j]; //Находим разницу элемента
- output << mas_1[i][j] << " "; //Записываем ответ в файл
- }
- }
- }
- else{ //Если размеры матриц разные...
- output << "Найти разницу невозможно, так как матрицы разных размеров!"; //Записываем сообщение в файл
- }
- output.close(); //Закрываем файл
- x = x++;
- }
- void Multiplication(){ //Функция поиска произведения матриц
- out [10] = x + '0'; //Присваиваем индивидуальный символ в путь
- ofstream output(out); //Открываем файл для записи
- if (m1 == n2){
- output << n1 << " " << m2 << endl; //Записываем в файл размерность массива
- for(int i = 0; i < n1; i++){
- output << endl; //Переходим на следующую строку записи
- for(int j = 0; j < m2; j++){
- mul = 0; //Обнуляем переменную
- for(int k = 0; k < m1; k++){
- mul = mul + mas_1[i][k]*mas_2[k][j]; //Находим произведение элемента
- }
- output << mul << " "; //Записываем ответ в файл
- }
- }
- }
- else{
- output << "Найти произведение невозможно, так как матрицы разных размеров!"; //Записываем сообщение в файл
- }
- output.close(); //Закрываем файл
- x = x++;
- }
- void Determinant(){ //Функция поиска детерминанта матрицы
- if (n1 == 1 and m1 ==1){ //Детерминант для матрицы 1х1
- D = mas_1[0][0];
- }
- if (n1 == 2 and m1 ==2){ //Детерминант для матрицы 2х2
- D = mas_1[0][0] * mas_1[1][1] - mas_1[0][1] * mas_1[1][0];
- }
- if (n1 == 3 and m1 ==3){ //Детерминант для матрицы 3х3
- 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]
- + mas_1[0][2] * mas_1[1][0] * mas_1[2][1] - mas_1[0][2] * mas_1[1][1] * mas_1[2][0]
- - mas_1[0][1] * mas_1[1][0] * mas_1[2][2] - mas_1[0][0] * mas_1[1][2] * mas_1[2][1];
- }
- }
- void Input_Output(){ //Функция ввода/вывода
- cout << "Введите путь к входному файлу:" << endl;
- cin >> inp; //Ввод пути к файлу
- ifstream file(inp); //Открываем файл для чтения
- if (!file.is_open()){ //Если файл не открыт
- cout << "Файл не найден!" << endl;
- }
- else{
- ofstream otvet("D:\\Mat_otvet.txt"); //Открываем выходной файл для записи
- while (!file.eof()) { //Пока не закончился файл...
- file>>inp_1; //Считываем путь к первой матрице
- ifstream mat_1(inp_1); //Открываем файл
- if (!mat_1.is_open()){ //Если файл не открыт...
- cout << "Файл <" << inp_1 << "> не найден!" << endl;
- }
- else{
- mat_1>>n1; //Считываем размеры матрицы
- mat_1>>m1; //Считываем размеры матрицы
- for(int i = 0; i < n1; i++){
- mas_1[i] = new int[m1]; //Строим двумерный массив
- for(int j = 0; j < m1; j++){
- mat_1>>mas_1[i][j]; //Заполняем массив с файла
- }
- }
- }
- mat_1.close(); //Закрываем файл
- file>>action; //Считываем действие
- if (action == '+' or action == '-' or action == '*'){
- file>>inp_2; //Считываем путь ко второй матрице
- ifstream mat_2(inp_2); //И открываем ее
- if (!mat_2.is_open()){ //Если файл не открыт...
- cout << "Файл <" << inp_2 << "> не найден!" << endl;
- }
- else{
- mat_2>>n2; //Считываем размеры матрицы
- mat_2>>m2; //Считываем размеры матрицы
- for(int i = 0; i < n2; i++){
- mas_2[i] = new int[m2]; //Строим двумерный массив
- for(int j = 0; j < m2; j++){
- mat_2>>mas_2[i][j]; //Заполняем массив с файла
- }
- }
- }
- mat_2.close(); //Закрываем файл
- }
- if (action == '+'){ //Если действие +
- otvet << inp_1 << " + " << inp_2 << " = "; //Записываем ответ в файл
- Sum(); //Используем функцию
- otvet << out << endl; //Записываем ответ в файл
- }
- if (action == '-'){ //Если действие -
- otvet << inp_1 << " - " << inp_2 << " = "; //Записываем ответ в файл
- Difference(); //Используем функцию
- otvet << out << endl; //Записываем ответ в файл
- }
- if (action == '*'){ //Если действие *
- otvet << inp_1 << " * " << inp_2 << " = "; //Записываем ответ в файл
- Multiplication(); //Используем функцию
- otvet << out << endl; //Записываем ответ в файл
- }
- if (action == 'D'){
- otvet << inp_1 << " D = "; //Записываем ответ в файл
- Determinant();
- if (n1 != m1){
- otvet << "Детерминант невозможно найти, так как матрицы разного размера!" << endl;
- }
- else{
- otvet << D << endl;
- }
- }
- }
- otvet.close(); //Закрываем выходной файл
- }
- file.close(); //Закрываем входной файл
- }
- int main()
- {
- setlocale(LC_ALL, "Russian"); //Подключаем Русский язык
- Input_Output(); //Используем функцию
- cout << "Работа завершена...";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement