Advertisement
JouJoy

Untitled

Jan 15th, 2021
748
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.04 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. void createMatrix(int** Matrix, int n, int m)
  5. {
  6.     for (int i = 0; i < n; i++)
  7.     {
  8.         for (int j = 0; j < m; j++)
  9.         {
  10.             cout << "Элемент[" << i << "][" << j << "]=";
  11.             cin >> Matrix[i][j];
  12.         }
  13.     }
  14.  
  15. }
  16.  
  17.  
  18. void showMatrix(int** Matrix, int n, int m)
  19. {
  20.     for (int i = 0; i < n; i++)
  21.     {
  22.         for (int j = 0; j < m; j++)
  23.         {
  24.             cout << Matrix[i][j] << "\t";
  25.         }
  26.         cout << endl;
  27.     }
  28. }
  29. int findIndex(int** Matrix, int n, int m, int Number)
  30. {
  31.     int i, j;
  32.     for (i = 0; i < n; i++)
  33.     {
  34.         for (j = 0; j < m; j++)
  35.         {
  36.             if (Matrix[i][j] == Number)//находим нужные числа и записываем номера строк
  37.                 return i;
  38.         }
  39.     }
  40.     return -1; //у матрицы не может быть такого индекса, поэтому для удобства присваиваем такое значение, если число не нашлось
  41. }
  42.  
  43. bool DoContinue(int** Matrix, int n, int m,int Num1,int Num2)//проверят все нужные нам условия для выполнения смены строк
  44. {
  45.  
  46.     if (findIndex(Matrix, n, m, Num1) == -1 || findIndex(Matrix, n, m, Num2) == -1)//если хоть одно число не найдено - не выполняем смену строк
  47.         return false;
  48.     if (findIndex(Matrix, n, m, Num1) == findIndex(Matrix, n, m, Num2))//не выполняем смену строк, если числа в одной строке
  49.         return false;
  50.     return true;//в ином случае, выполняем смену строк
  51. }
  52.  
  53.  
  54. void change(int** Matrix, int n, int m)
  55. {
  56.     int i, j;
  57.     int* MatrStroka;
  58.     int Numb1;//искомое число 1
  59.     int Numb2;//искомое число 2
  60.     int S6, S9;//сюда запишем номера строк с нужными числами( минус один поставили, чтобы в случае, если строки нет программа ничего не меняла)
  61.     cout << "Введите первое число для поиска и смены:" << endl;
  62.     cin >> Numb1;
  63.     cout << "Введите первое число для поиска и смены:" << endl;
  64.     cin >> Numb2;
  65.     if (DoContinue(Matrix,n,m,Numb1,Numb2))
  66.     {
  67.         S6 = findIndex(Matrix, n, m, Numb1);
  68.         S9 = findIndex(Matrix, n, m, Numb2);
  69.         MatrStroka = Matrix[S6];
  70.         Matrix[S6] = Matrix[S9];
  71.         Matrix[S9] = MatrStroka;
  72.     }
  73. }
  74.  
  75.  
  76.  
  77. int main()
  78. {
  79.     setlocale(LC_ALL, "rus");
  80.     int n, m;
  81.     cout << "Введите размерность матрицы n*m: " << endl;
  82.     cout << "(количество строк) n= ";
  83.     cin >> n;
  84.     cout << "(количество столбцов) m= ";
  85.     cin >> m;
  86.     int** A = new int* [n];
  87.     for (int i = 0; i < n; i++)
  88.     {
  89.         A[i] = new int[m];
  90.     }
  91.     cout << "Введите матрицу " << endl;
  92.     createMatrix(A, n, m);
  93.     showMatrix(A, n, m);
  94.     cout << endl;
  95.  
  96.     change(A, n, m);
  97.     cout << "Матрица после изменения:" << endl;
  98.     showMatrix(A, n, m);
  99.  
  100.  
  101.     for (int i = 0; i < n; i++)
  102.         delete[] A[i];
  103.     delete[] A;
  104.  
  105.     return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement