Advertisement
vasylmartyniv

C2S1-Nazar-4.1

Dec 20th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <vector>
  4.  
  5. using namespace std;
  6. template <typename T>
  7. class Matrix{   //Сворюю клас (шаблон) для матриці
  8. public:
  9.     vector<vector<int>> matr;   //Створюю двовимірний масив (Матрицю)
  10.     Matrix(int x,int y ){   //Функція яка створює матрицю по цьому щаблону заданого розміру з нульовими елементами
  11.         for (int i = 0; i < x; ++i) {   //Для кожного рядка матриці
  12.             vector<int> temp;   //Створюємо масив
  13.             for (int j = 0; j < y; ++j) {   //І для кожного стовпця
  14.                 temp.push_back({0});    //Запихаємо в цей масив нуль
  15.             }
  16.             this->matr.push_back(temp);     //Запихаємо цей масив в матрицю
  17.         }
  18.     }
  19.     void FillMatr(){    //Функція для заповнення матриці числами
  20.         for (int i = 0; i < this->matr.size(); i++) {   //Для кожного рядка
  21.             for (int j = 0; j < this->matr[i].size(); j++) { //Для кожного стовпця в рядку
  22.                 int n;
  23.                 cout << "Enter element a["<<i<<"]["<<j<<"]:";
  24.                 cin >> n;   //Вводимо число
  25.                 this->matr[i][j]=n; //Присвоюю цьому елементу в рядку число яке ввели
  26.                 this->PrintMatr();  //Виводжу оновлену матрицю
  27.             }
  28.         }
  29.         for (int i = 0; i < this->matr.size(); i++) {   //Для кожного рядка
  30.             int temp;
  31.             temp=this->matr[i][0];
  32.             this->matr[i][0]=this->matr[i].back();
  33.             this->matr[i].back()=temp;
  34.         }
  35.     }
  36.     void PrintMatr(){   //Функція для виведення матриці
  37.         cout <<endl;
  38.         for (int i = 0; i < this->matr.size(); i++) {   //Для кожного рядка
  39.             cout << "[";
  40.             for (int j = 0; j < this->matr[i].size(); j++) {    //Для кожного стовпця в рядку
  41.                 cout << " "<<this->matr[i][j] << " ";   //виводимо елемент
  42.             }
  43.             cout << "]" <<endl;
  44.         }
  45.     }
  46.     void maxbymodule(){  //Функція для підрахунку стовпців з нулями
  47.         int max=0;
  48.         for (int i = 0; i < this->matr.size(); i++) {   //Для кожного рядка матриці
  49.             for (int j = 0; j < this->matr[i].size(); j++) {    //Для кожного стовпця в рядку
  50.                 if(abs(this->matr[i][j])>abs(max)){    //Перевіряємо чи цей елемент дорівнює нулю
  51.                     max=this->matr[i][j];
  52.                 }
  53.             }
  54.         }
  55.         cout << "Biggest by module element is: "<<max<<endl;   //Виводим результат
  56.     }
  57.     void summbetween(){   //Функція для пошуку найдовшого рядка одинакових елементів
  58.         int summ=0;
  59.         int flag =0;
  60.         for (int i = 0; i < this->matr.size(); i++) {   //Для кожного рядка матриці
  61.             for (int j = 0; j < this->matr[i].size(); j++) {    //Для кожного стовпця в рядку
  62.                 if(this->matr[i][j]>0){    //Перевіряємо чи цей елемент дорівнює нулю
  63.                     flag++;
  64.                     continue;
  65.                 }
  66.                 if(flag==1){
  67.                     summ+=this->matr[i][j];
  68.                 }
  69.             }
  70.         }
  71.         cout << "Summ of elements between first and second positive numbers: "<<summ <<endl;  //виводим результат
  72.     }
  73. };
  74.  
  75. int main() {
  76.     int x=0,y=0;    //Робимо змінні для розмірів матриці
  77.     cout << "Enter amount of rows:";
  78.     cin >> x;   //Зчитуємо число рядків
  79.     cout << "Enter amount of columns:";
  80.     cin >> y;   //Зчитуємо число стовпців
  81.     Matrix<int> a(x,y); //Створюємо змінну(об'єкт) матриці з заданими розмірами
  82.     a.PrintMatr();  //Викликаємо функцію що виведе створену пусту матрицю
  83.     a.FillMatr();   //Викликаємо функцію що заповнить матрицю числами
  84.     a.PrintMatr();  //Виводимо заповнену матрицю
  85.     a.maxbymodule();
  86.     a.summbetween();
  87.     return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement