fork download
  1. /* цей код написано користувачем Koala форуму replace.org.ua. Відтворення і
  2. використання цілком або частинами дозволяється виключно за умови надання в гілку
  3. http://r...content-available-to-author-only...g.ua/topic/9417/ відеостріма зі здачі цього коду замовнику/викладачу */
  4.  
  5. #include <iostream>
  6. #include <vector>
  7. #include <random>
  8. #include <algorithm>
  9.  
  10. int main() {
  11. int width, height;
  12. std::cout<<"Введіть через пробіл кількість рядків і стовбчиків: ";
  13. std::cin>>height>>width;
  14. std::vector<std::vector<int>> matrix(height);
  15.  
  16. std::default_random_engine generator;
  17. std::uniform_int_distribution<int> distribution(-20,20);
  18. std::generate(matrix.begin(),matrix.end(),[&](){
  19. std::vector<int> line(width);
  20. std::generate(line.begin(),line.end(),[&](){return distribution(generator);});
  21. return line;
  22. });
  23.  
  24. std::cout<<"Початкова матриця:\n";
  25. std::for_each(matrix.begin(),matrix.end(),[&](std::vector<int> & line){
  26. std::for_each(line.begin(),line.end(),[&](int x){std::cout<<x<<" ";});
  27. std::cout<<"\n";
  28. });
  29.  
  30. auto min_line = std::min_element(matrix.begin(),matrix.end(),
  31. [](std::vector<int> & left, std::vector<int> & right){
  32. return *std::min_element(left.begin(),left.end()) < *std::min_element(right.begin(),right.end());
  33. });
  34. std::swap(*min_element(min_line->begin(), min_line->end()),matrix[height-1][0]);
  35.  
  36. auto max_line = std::max_element(matrix.begin(),matrix.end(),
  37. [](std::vector<int> & left, std::vector<int> & right){
  38. return *std::max_element(left.begin(),left.end()) < *std::max_element(right.begin(),right.end());
  39. });
  40. std::swap(*std::max_element(max_line->begin(), max_line->end()),matrix[0][width-1]);
  41.  
  42. std::cout<<"Матриця після обмінів:\n";
  43. std::for_each(matrix.begin(),matrix.end(),[&](std::vector<int> & line){
  44. std::for_each(line.begin(),line.end(),[&](int x){std::cout<<x<<" ";});
  45. std::cout<<"\n";
  46. });
  47. return 0;
  48. }
Success #stdin #stdout 0s 4376KB
stdin
4 4
stdout
Введіть через пробіл кількість рядків і стовбчиків: Початкова матриця:
-20 -15 10 -2 
1 -12 -19 7 
7 18 -5 1 
14 -19 -18 1 
Матриця після обмінів:
14 -15 10 18 
1 -12 -19 7 
7 -2 -5 1 
-20 -19 -18 1