Advertisement
ortem_kats

salibek_lab1

Jan 14th, 2020
381
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     srand(time(0));
  11.     vector<int> vec;
  12.     int min = 1000;
  13.     for (int i = 0; i < 40; i++){
  14.         vec.push_back((rand() % 20001) - 10000);
  15.     }
  16.  
  17.     for (auto it = vec.begin(); it != vec.end(); it++){
  18.         cout << *it << " | ";
  19.         if (*it > 99 && *it < 1000 && *it < min){
  20.             min = *it;
  21.         }
  22.     }
  23.    
  24.     if (min == 1000){
  25.         cout << endl << "NO";
  26.     }
  27.     else{
  28.         cout << endl << "MIN: " << min;
  29.     }
  30.    
  31.     return 0;
  32. }
  33.  
  34.  
  35. /*************************************************************************************************************************************/
  36.  
  37.  
  38. #include <iostream>
  39. #include <ctime>
  40. #include <cstdlib>
  41. #include <vector>
  42. #include <algorithm>
  43.  
  44. using namespace std;
  45.  
  46. void reverseFirstColumn(vector< vector<int> > &matr){
  47.     vector<int> vec;
  48.     for (auto& it : matr)
  49.         vec.push_back(*it.begin());
  50.     reverse(vec.begin(), vec.end());
  51.     auto it1 = vec.begin();
  52.     for (auto& it : matr)
  53.         *it.begin() = *(it1++);
  54. }
  55.  
  56. bool checkRepeats(const vector< vector<int> > &matr){
  57.     for (auto it1 = matr.begin(); it1 != matr.end(); it1++)
  58.         for (auto it2 = it1 + 1; it2 != matr.end(); it2++)
  59.             if (*it1->begin() == *it2->begin())
  60.                 return false;
  61.     return true;
  62. }
  63.  
  64. void changeSigns(const int &row, vector< vector<int> > &matr){
  65.     for (auto it = (matr.begin()+row-1)->begin()+row-1; it != (matr.begin()+row-1)->end(); it++)
  66.         if (!(*it % 2))
  67.             *it = -*it;
  68. }
  69.  
  70. bool checkZeros(const vector< vector<int> > &matr){
  71.     int kol = 0;
  72.     for (auto& it : matr)
  73.         kol += count(it.begin(), it.end(), 0);
  74.     if (!(kol % 2) && kol > 0) return true;
  75.     return false;
  76. }
  77.  
  78. void removeRows(vector< vector<int> > &matr){
  79.     for (auto it = matr.begin()+1; it < matr.end(); it++){
  80.         if (*it == *matr.begin())
  81.             matr.erase(it, it+1);
  82.     }
  83. }
  84.  
  85. void printMatrix(const vector< vector<int> > &matr){
  86.     for (auto it1 = matr.begin(); it1 != matr.end(); it1++){
  87.         for (auto it2 = it1->begin(); it2 != it1->end(); it2++)
  88.             cout << *it2 << "\t";
  89.         cout << endl;
  90.     }
  91. }
  92.  
  93. int main()
  94. {
  95.     srand(time(0));
  96.     int n = 4;
  97.     vector< vector<int> > matrix;
  98.     for (int i = 0; i < n; i++){
  99.         vector<int> vec;
  100.         int d;
  101.         for (int j = 0; j < n; j++){
  102.             cin >> d;
  103.             vec.push_back(d);
  104.         }
  105.             //vec.push_back(rand() % 21 - 10);
  106.         matrix.push_back(vec);
  107.     }
  108.    
  109.     cout << "Исходная матрица:\n";
  110.     printMatrix(matrix);
  111.    
  112.     if (checkRepeats(matrix)){
  113.         reverseFirstColumn(matrix);
  114.         cout << "\nПеревернутый первый столбец:\n";
  115.         printMatrix(matrix);
  116.     }
  117.     else cout << "\nВ первом столбце есть повторения.\n";
  118.    
  119.     int r;
  120.     cout << "\nВведите номер строки от 1 до " << n << ":\n";
  121.     cin >> r;
  122.     changeSigns(r, matrix);
  123.     cout << "\nИзмененные знаки у всех четных элементов в " << r << "ой строке, начиная от главной диагонали:\n";
  124.     printMatrix(matrix);
  125.    
  126.     int x;
  127.     if (checkZeros(matrix)){
  128.         for (auto& it : matrix)
  129.             replace(it.begin(), it.end(), 0, *max_element(matrix.begin()->begin(), matrix.begin()->end()));
  130.         cout << "\nНули заменены на максимум первой строки:\n";
  131.         printMatrix(matrix);
  132.     }
  133.     else cout << "\nЧисло нулей нечетно или их нет.\n";
  134.    
  135.     removeRows(matrix);
  136.     if (matrix.size() != n){
  137.         cout << "\nУдалены строки, равные первой:\n";
  138.         printMatrix(matrix);
  139.     }
  140.     else cout << "\nНет строк равных первой.\n";
  141.    
  142.     return 0;
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement