Guest User

Untitled

a guest
Mar 30th, 2016
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.44 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <conio.h>
  4. using namespace std;
  5.  
  6. //C=A*42+B
  7. void matrix(int n, int m, double *Pt)
  8. //функция создания матриц
  9. {
  10.     for (int i = 0; i<n; i++)
  11.         for (int j = 0; j<m; j++)
  12.         {
  13.             cout << "Matrix[" << i << "][" << j << "]=";
  14.             cin >> Pt[i*m + j];
  15.         }
  16. }
  17.  
  18. void matrix_file(int n, int m, double *Pt, ifstream &rStream)
  19. //функция считывания матриц с файла
  20. {
  21.     for (int i = 0; i<n; i++)
  22.         for (int j = 0; j<m; j++)
  23.         {
  24.             rStream >> Pt[i*m + j];
  25.         }
  26. }
  27.  
  28. void display(int n, int m, double *Pt)
  29. //функция вывода матрицы на экран
  30. {
  31.     for (int i = 0; i<n; cout << endl, i++)
  32.         for (int j = 0; j<m; j++)
  33.             cout << Pt[i*m + j] << " ";
  34. }
  35.  
  36. void display_file(int n, int m, double *Pt, ofstream &wStream)
  37. //функция вывода матриц в файл
  38. {
  39.     for (int i = 0; i<n; wStream << endl, i++)
  40.         for (int j = 0; j<m; j++)
  41.             wStream << Pt[i*m + j] << " ";
  42.     wStream << endl;
  43. }
  44.  
  45. void matrix_multi(int n, int m, double *Pt, double numb)
  46. //функция умножения матрицы на число
  47. {
  48.     for (int i = 0; i < n;i++)
  49.         for (int j = 0; j < m; j++)
  50.             Pt[i*m + j] = Pt[i*m + j] * numb;
  51. }
  52.  
  53. void matrix_summ(int n, int m, double *Pt1, double *Pt2, double *Pt3)
  54. //функция умножения матриц
  55. {
  56.     for (int i = 0; i<n; i++)
  57.         for (int j = 0; j<m; j++)
  58.             Pt3[i*m + j] = Pt1[i*m + j] + Pt2[i*m + j];
  59. }
  60.  
  61.  
  62. int main()
  63. {  
  64.    
  65.     setlocale(LC_ALL, "rus");
  66.  
  67.     int n = 0;
  68.     int m = 0;//размерность матриц
  69.  
  70.     ifstream rStream;
  71.     rStream.open("file.txt", ios_base::in);//поток для чтения
  72.  
  73.     char cAsk = ' ';
  74.     if (rStream)//если файл существует
  75.     {
  76.         cout << "Хотите ли вы изменить значения в файле?\"Y - Yes\"" << endl;
  77.         cAsk = _getch();
  78.     }
  79.  
  80.     double *dblPtA = new double[n*m];
  81.     double *dblPtB = new double[n*m];
  82.     double *dblPtC = new double[n*m];//массивы для матриц
  83.     if (!rStream || cAsk == 'Y' || cAsk == 'y')//если файл не был открыт, либо cAsk=='Y'
  84.     {
  85.         rStream.close();//закрываем прошлый поток
  86.  
  87.         ofstream wStream; //поток для записи
  88.                          
  89.         wStream.open("file.txt", ios_base::out);//открываем файл для записи(файл автоматически обнуляется)
  90.  
  91.         cout << "Введите размерность матриц\n";
  92.         cout << "Введите N\n";
  93.         cin >> n;
  94.         wStream << n << " ";
  95.         cout << "Введите M\n";
  96.         cin >> m;
  97.         wStream << m << " "<<endl;//считываем размерность матрицы и выводим в файл
  98.  
  99.         cout << "Введите матрицу A:\n";
  100.        
  101.         matrix(n, m, dblPtA);
  102.         display_file(n, m, dblPtA, wStream);//считываем матрицу с клавиатуры и выводим в файл
  103.  
  104.         cout << "Введите матрицу B:\n";
  105.        
  106.         matrix(n, m, dblPtB);
  107.         display_file(n, m, dblPtB, wStream);
  108.  
  109.         int numb = 0;
  110.         cout << "Введите число на которое будем множить матрицу A\n";
  111.         cin >> numb;
  112.         matrix_multi(n, m, dblPtA, numb);//считываем число и умножаем не него матрицу А
  113.  
  114.         cout << "C = A*numb+B\nMatrix C:\n";
  115.         matrix_summ(n, m, dblPtA, dblPtB, dblPtC);
  116.         display(n, m, dblPtC);//умножаем матрицы и выводим раезультат на экран
  117.  
  118.         wStream.close();//!!закрываем поток
  119.  
  120.         delete[] dblPtA;
  121.         delete[] dblPtB;
  122.         delete[] dblPtC;//очищаем память
  123.     }
  124.     else
  125.     {
  126.         rStream >> n >> m; // считываем с файла размерность матрицы
  127.  
  128.         matrix_file(n, m, dblPtA, rStream);
  129.  
  130.         matrix_file(n, m, dblPtA, rStream);//считываем с файла матрицы А и B
  131.  
  132.         int numb = 0;
  133.         cout << "Введите число на которое будем множить матрицу A\n";
  134.         cin >> numb;
  135.         matrix_multi(n, m, dblPtA, numb);//умножаем матрицу A на число
  136.  
  137.         cout << "C = A*numb+B\nMatrix C:\n";
  138.         matrix_summ(n, m, dblPtA, dblPtB, dblPtC);
  139.         display(n, m, dblPtC);//умножаем матрицы и выводим результат на экран
  140.  
  141.         rStream.close();//закрываем поток
  142.  
  143.         delete[] dblPtA;
  144.         delete[] dblPtB;
  145.         delete[] dblPtC;
  146.     }
  147.     system("pause");//создаем задержку
  148. }
Advertisement
Add Comment
Please, Sign In to add comment