Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <conio.h>
- using namespace std;
- //C=A*42+B
- void matrix(int n, int m, double *Pt)
- //функция создания матриц
- {
- for (int i = 0; i<n; i++)
- for (int j = 0; j<m; j++)
- {
- cout << "Matrix[" << i << "][" << j << "]=";
- cin >> Pt[i*m + j];
- }
- }
- void matrix_file(int n, int m, double *Pt, ifstream &rStream)
- //функция считывания матриц с файла
- {
- for (int i = 0; i<n; i++)
- for (int j = 0; j<m; j++)
- {
- rStream >> Pt[i*m + j];
- }
- }
- void display(int n, int m, double *Pt)
- //функция вывода матрицы на экран
- {
- for (int i = 0; i<n; cout << endl, i++)
- for (int j = 0; j<m; j++)
- cout << Pt[i*m + j] << " ";
- }
- void display_file(int n, int m, double *Pt, ofstream &wStream)
- //функция вывода матриц в файл
- {
- for (int i = 0; i<n; wStream << endl, i++)
- for (int j = 0; j<m; j++)
- wStream << Pt[i*m + j] << " ";
- wStream << endl;
- }
- void matrix_multi(int n, int m, double *Pt, double numb)
- //функция умножения матрицы на число
- {
- for (int i = 0; i < n;i++)
- for (int j = 0; j < m; j++)
- Pt[i*m + j] = Pt[i*m + j] * numb;
- }
- void matrix_summ(int n, int m, double *Pt1, double *Pt2, double *Pt3)
- //функция умножения матриц
- {
- for (int i = 0; i<n; i++)
- for (int j = 0; j<m; j++)
- Pt3[i*m + j] = Pt1[i*m + j] + Pt2[i*m + j];
- }
- int main()
- {
- setlocale(LC_ALL, "rus");
- int n = 0;
- int m = 0;//размерность матриц
- ifstream rStream;
- rStream.open("file.txt", ios_base::in);//поток для чтения
- char cAsk = ' ';
- if (rStream)//если файл существует
- {
- cout << "Хотите ли вы изменить значения в файле?\"Y - Yes\"" << endl;
- cAsk = _getch();
- }
- double *dblPtA = new double[n*m];
- double *dblPtB = new double[n*m];
- double *dblPtC = new double[n*m];//массивы для матриц
- if (!rStream || cAsk == 'Y' || cAsk == 'y')//если файл не был открыт, либо cAsk=='Y'
- {
- rStream.close();//закрываем прошлый поток
- ofstream wStream; //поток для записи
- wStream.open("file.txt", ios_base::out);//открываем файл для записи(файл автоматически обнуляется)
- cout << "Введите размерность матриц\n";
- cout << "Введите N\n";
- cin >> n;
- wStream << n << " ";
- cout << "Введите M\n";
- cin >> m;
- wStream << m << " "<<endl;//считываем размерность матрицы и выводим в файл
- cout << "Введите матрицу A:\n";
- matrix(n, m, dblPtA);
- display_file(n, m, dblPtA, wStream);//считываем матрицу с клавиатуры и выводим в файл
- cout << "Введите матрицу B:\n";
- matrix(n, m, dblPtB);
- display_file(n, m, dblPtB, wStream);
- int numb = 0;
- cout << "Введите число на которое будем множить матрицу A\n";
- cin >> numb;
- matrix_multi(n, m, dblPtA, numb);//считываем число и умножаем не него матрицу А
- cout << "C = A*numb+B\nMatrix C:\n";
- matrix_summ(n, m, dblPtA, dblPtB, dblPtC);
- display(n, m, dblPtC);//умножаем матрицы и выводим раезультат на экран
- wStream.close();//!!закрываем поток
- delete[] dblPtA;
- delete[] dblPtB;
- delete[] dblPtC;//очищаем память
- }
- else
- {
- rStream >> n >> m; // считываем с файла размерность матрицы
- matrix_file(n, m, dblPtA, rStream);
- matrix_file(n, m, dblPtA, rStream);//считываем с файла матрицы А и B
- int numb = 0;
- cout << "Введите число на которое будем множить матрицу A\n";
- cin >> numb;
- matrix_multi(n, m, dblPtA, numb);//умножаем матрицу A на число
- cout << "C = A*numb+B\nMatrix C:\n";
- matrix_summ(n, m, dblPtA, dblPtB, dblPtC);
- display(n, m, dblPtC);//умножаем матрицы и выводим результат на экран
- rStream.close();//закрываем поток
- delete[] dblPtA;
- delete[] dblPtB;
- delete[] dblPtC;
- }
- system("pause");//создаем задержку
- }
Advertisement
Add Comment
Please, Sign In to add comment