Для заданной матрицы А размерности M⨯N написать программу перестановки двух произвольных столбцов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сгенерировал матрицу
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. int strok(int x)
  5. {
  6. scanf("%d", &x);
  7. return x;
  8. }
  9. int stolb(int y)
  10. {
  11. printf("%d\t", y);
  12. return 0;
  13. }
  14. int main()
  15. {
  16. SetConsoleCP(1251);
  17. SetConsoleOutputCP(1251);
  18. int m, n, i, j; //m-число строк, n-число столбцов
  19. do {
  20. printf("Введите размер массива MXN\n");
  21. printf("Количество строк: ");
  22. scanf("%d",&m);
  23. printf("Количество столбцов: ");
  24. scanf("%d",&n);
  25. if (m<1 || n<1) printf("Размеры введены некорректно\n");
  26. }while (m<1 || n<1);
  27. int matrix[m][n];
  28. for (i=0;i<m;i++){
  29. for (j=0;j<n;j++){
  30. printf("matrix[%d][%d]=",i+1,j+1);
  31. matrix[i][j]=strok(matrix[i][j]);
  32. }
  33. }
  34. for (i=0;i<m;i++){
  35. for (j=0;j<n;j++){
  36. stolb(matrix[i][j]);
  37. }
  38. printf("\n");
  39. }
  40. return 0;
  41. }
как осуществить перестановку двух столбцов в этой матрице??
Извиняюсь, программа на языке СИ нужна

Решение задачи: «Для заданной матрицы А размерности M⨯N написать программу перестановки двух произвольных столбцов»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. #define N 20 //размер массива
  6.  
  7. int strok(int x)
  8. {
  9.     scanf("%d", &x);
  10.     return x;
  11. }
  12.  
  13. int stolb(int y)
  14. {
  15.     printf("%d\t", y);
  16.     return 0;
  17. }
  18.  
  19. int main()
  20. {
  21.     SetConsoleCP(1251);
  22.     SetConsoleOutputCP(1251);
  23.     int m =0 , n, i, j, j1, j2, temp;    //m-число строк, n-число столбцов
  24.     int matrix[N][N];
  25.     do {
  26.         printf("Введите размер массива MxN [max(M,N) = %d  min(M,N) = %d]\n",N,1);
  27.         printf("Количество строк: ");
  28.         scanf("%d", &m);
  29.         printf("Количество столбцов: ");
  30.         scanf("%d", &n);
  31.     } while ((m<1 || n<1 || m>N || n>N) && printf("Размеры введены некорректно!\n"));
  32.  
  33.     for (i = 0;i<m;i++) {
  34.         for (j = 0;j<n;j++) {
  35.             printf("matrix[%d][%d]=", i + 1, j + 1);
  36.             matrix[i][j] = strok(matrix[i][j]);
  37.         }
  38.     }
  39.     printf("\n");
  40.  
  41.     for (i = 0;i < m;i++) {
  42.         for (j = 0;j < n;j++)
  43.             printf("%3d ", matrix[i][j]);
  44.         printf("\n");
  45.     }
  46.  
  47.     do {
  48.         printf("\nВведите номера столбцов через пробел, которые нужно переставить: ");
  49.         scanf("%d %d", &j1, &j2);
  50.     } while ((j1<1 || j2<1 || j1>m || j2>n) && printf("Номера столбцов введены некорректно!\n"));
  51.  
  52.     printf("\n");
  53.  
  54.     for (i = 0;i < m;i++)
  55.     {
  56.         temp = matrix[i][j1-1];
  57.         matrix[i][j1-1] = matrix[i][j2-1];
  58.         matrix[i][j2-1] = temp;
  59.     }
  60.  
  61.     for (i = 0;i < m;i++) {
  62.         for (j = 0;j < n;j++)
  63.             printf("%3d ", matrix[i][j]);
  64.         printf("\n");
  65.     }
  66.  
  67.     return 0;
  68. }

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем размер матрицы NxN
  3. Функция strok считывает целочисленное значение из стандартного ввода и возвращает его
  4. Функция stolb выводит целочисленное значение в стандартный вывод, после чего возвращает 0
  5. В функции main устанавливаем кодировку консоли на 1251
  6. Инициализируем переменные m, n, i, j, j1, j2, temp со значениями 0
  7. В цикле do-while запрашиваем у пользователя ввод размеров матрицы MxN и проверяем корректность введенных значений
  8. Если размеры введены некорректно, выводим сообщение об ошибке и повторно запрашиваем ввод размеров
  9. Когда размеры введены корректно, считываем значения матрицы из стандартного ввода
  10. Выводим значения матрицы в консоль
  11. В цикле do-while запрашиваем у пользователя ввод номеров столбцов для перестановки и проверяем корректность введенных значений
  12. Если номера столбцов введены некорректно, выводим сообщение об ошибке и повторно запрашиваем ввод номеров столбцов
  13. Когда номера столбцов введены корректно, меняем значения элементов матрицы местами
  14. Выводим измененные значения матрицы в консоль
  15. Возвращаем 0, чтобы прекратить выполнение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы