Xisepe

с пояснением 2

Dec 9th, 2021
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <limits.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <vector>
  6.  
  7. using namespace std;
  8. vector<vector<int>> initFromKeyboard(int N) {
  9.     vector<vector<int>> matrix(N);
  10.     for (int i = 0; i < N; ++i) {
  11.         for (int j = 0; j < N; ++j) {
  12.             int tmp;
  13.             cin >> tmp;
  14.             //обращаемсы к массиву в массиве, записываем в него элемент из клавиатуры
  15.             matrix.at(i).push_back(tmp);
  16.         }
  17.     }
  18.     return matrix;
  19. }
  20. vector<vector<int>> initByRand(int N) {
  21.     vector<vector<int>> matrix(N);
  22.     srand(time(0));
  23.     for (int i = 0; i < N; ++i) {
  24.         for (int j = 0; j < N; ++j) {
  25.             //обращаемсы к массиву в массиве, записываем в него элемент из клавиатуры
  26.             matrix.at(i).push_back(rand());
  27.         }
  28.     }
  29.     return matrix;
  30. }
  31. void findMinColAndVal(int N, vector<vector<int>> matrix, int *minVal, int *minCol) {
  32.     for (int i = 0; i < N; ++i) {
  33.         for (int j = 0; j < N; ++j) {
  34.             int tmp = matrix.at(i).at(j);
  35.             //ищем минимальный элемент среди введенных и запоминаем его столбец
  36.             if (tmp < *minVal) {
  37.                 *minVal = tmp;
  38.                 *minCol = j;
  39.             }
  40.         }
  41.     }
  42. }
  43.  
  44. int main() {
  45.     int N;
  46.     cout << "Enter matrix size\n";
  47.     //вводим размер матрицы
  48.     cin >> N;
  49.     cout << "1)Initialize from keyboard\n2)Initialize by random\n";
  50.     int opt;
  51.     cin >> opt;
  52.     int minCol = 0;
  53.     int minVal = INT_MAX;
  54.     //сама матрица
  55.     //получается мы храним в массиве массивы
  56.     vector<vector<int>> matrix;
  57.     switch (opt) {
  58.         case 1:
  59.             matrix = initFromKeyboard(N);
  60.             break;
  61.         case 2:
  62.             matrix = initByRand(N);
  63.             break;
  64.     }
  65.     findMinColAndVal(N, matrix, &minVal, &minCol);
  66.     int sum = 0;
  67.     //ищем сумму столбца с минимальным значением
  68.     for (int i = 0; i < N; ++i) {
  69.         sum += matrix.at(i).at(minCol);
  70.     }
  71.     //выводим минимальный элемент
  72.     cout << "Min Element is: " << minVal << '\n';
  73.     //выводим среднее значение
  74.     cout << "Average sum is: " << sum * 1.0 / N << '\n';
  75.     //выводим левый нижний угол, а значит все элементы до элемента главной диагонали включительно, индексы главной диагонали соответствено i=j=что то
  76.     for (int i = 0; i < N; ++i) {
  77.         for (int j = 0; j <= i; ++j) {
  78.             cout << matrix.at(i).at(j) << ' ';
  79.         }
  80.         cout << '\n';
  81.     }
  82.     return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment