Advertisement
Sanlover

second

Jan 20th, 2022
823
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <iomanip>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     // Подключаем русскую кодировку для консоли
  10.     SetConsoleOutputCP(1251);
  11.     // Высоты и ширины массивов в виде констант
  12.     const int aHeight = 5, aWidth = 8, bHeight = 8, bWidth = 5;
  13.  
  14.     // Выделяем память под строчки матрицы A
  15.     auto a = new double*[aHeight];
  16.     // В каждой строчке выделяем память под все ряды матрицы A
  17.     for (int i = 0; i < aHeight; i++)
  18.     {
  19.         a[i] = new double[aWidth];
  20.     }
  21.     // Выделяем память под строчки матрицы B
  22.     auto b = new double*[bHeight];
  23.     // В каждой строчке выделяем память под все ряды матрицы B
  24.     for (int i = 0; i < bHeight; i++)
  25.     {
  26.         b[i] = new double[bWidth];
  27.     }
  28.  
  29.     // Позиция по i и j (координаты) элемента с максимальным значением в матрице
  30.     int aMaxI = 0, aMaxJ = 0;
  31.     cout << endl << "Заполните матрицу A [" << aHeight << "][" << aWidth << "]:" << endl;
  32.     for (int i = 0; i < aHeight; i++)
  33.     {
  34.         for (int j = 0; j < aWidth; j++)
  35.         {
  36.             cout << "[" << i << "][" << j << "]) ";
  37.             cin >> a[i][j];
  38.             // Если только что введённый элемент больше чем тот, что находится по максимальным координатам ( которые
  39.             // были актуальны до этого момента), то мы сохраняем текущие i и j как новые координаты
  40.             if (a[i][j] > a[aMaxI][aMaxJ])
  41.             {
  42.                 aMaxI = i;
  43.                 aMaxJ = j;
  44.             }
  45.         }
  46.     }
  47.     cout << endl << "Заполните матрицу B [" << bHeight << "][" << bWidth << "]:" << endl;
  48.     for (int i = 0; i < bHeight; i++)
  49.     {
  50.         for (int j = 0; j < bWidth; j++)
  51.         {
  52.             cout << "[" << i << "][" << j << "]) ";
  53.             cin >> b[i][j];
  54.         }
  55.     }
  56.  
  57.     auto c = new double*[bWidth];
  58.     for (int i = 0; i < bWidth; i++)
  59.     {
  60.         c[i] = new double[bWidth];
  61.     }
  62.     // Формируем матрицу C
  63.     for (int i = 0; i < bWidth; i++)
  64.     {
  65.         for (int j = 0; j < bWidth; j++)
  66.         {
  67.             c[i][j] = 0;
  68.             for (int k = 0; k < aWidth; k++)
  69.             {
  70.                 c[i][j] += a[i][k] * b[k][j];
  71.             }
  72.         }
  73.     }
  74.  
  75.     cout << endl << endl << " Матрица A:" << endl;
  76.     for (int i = 0; i < aHeight; i++)
  77.     {
  78.         for (int j = 0; j < aWidth; j++)
  79.         {
  80.             cout << setw(3) << a[i][j];
  81.         }
  82.         cout << endl;
  83.     }
  84.     cout << endl << endl << " Матрица B:" << endl;
  85.     for (int i = 0; i < bHeight; i++)
  86.     {
  87.         for (int j = 0; j < bWidth; j++)
  88.         {
  89.             cout << setw(3) << b[i][j];
  90.         }
  91.         cout << endl;
  92.     }
  93.     cout << endl << endl << " Матрица C:" << endl;
  94.     for (int i = 0; i < bWidth; i++)
  95.     {
  96.         for (int j = 0; j < bWidth; j++)
  97.         {
  98.             cout << setw(3) << c[i][j];
  99.         }
  100.         cout << endl;
  101.     }
  102.     // Сортируем строку
  103.     sort(c[0], c[0] + bWidth);
  104.  
  105.     cout << endl << endl << " Матрица C с отсортированной первой строкой:" << endl;
  106.     for (int i = 0; i < bWidth; i++)
  107.     {
  108.         for (int j = 0; j < bWidth; j++)
  109.         {
  110.             cout << setw(3) << c[i][j];
  111.         }
  112.         cout << endl;
  113.     }
  114.     return 0;
  115. }
  116.  
Advertisement
Advertisement
Advertisement
RAW Paste Data Copied
Advertisement