Для заданной матрицы А размерности M⨯N написать программу перестановки двух произвольных столбцов - C (СИ)
Формулировка задачи:
Сгенерировал матрицу
как осуществить перестановку двух столбцов в этой матрице??
#include <stdio.h> #include <stdlib.h> #include <windows.h> int strok(int x) { scanf("%d", &x); return x; } int stolb(int y) { printf("%d\t", y); return 0; } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int m, n, i, j; //m-число строк, n-число столбцов do { printf("Введите размер массива MXN\n"); printf("Количество строк: "); scanf("%d",&m); printf("Количество столбцов: "); scanf("%d",&n); if (m<1 || n<1) printf("Размеры введены некорректно\n"); }while (m<1 || n<1); int matrix[m][n]; for (i=0;i<m;i++){ for (j=0;j<n;j++){ printf("matrix[%d][%d]=",i+1,j+1); matrix[i][j]=strok(matrix[i][j]); } } for (i=0;i<m;i++){ for (j=0;j<n;j++){ stolb(matrix[i][j]); } printf("\n"); } return 0; }
Извиняюсь, программа на языке СИ нужна
Решение задачи: «Для заданной матрицы А размерности M⨯N написать программу перестановки двух произвольных столбцов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <windows.h> #define N 20 //размер массива int strok(int x) { scanf("%d", &x); return x; } int stolb(int y) { printf("%d\t", y); return 0; } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int m =0 , n, i, j, j1, j2, temp; //m-число строк, n-число столбцов int matrix[N][N]; do { printf("Введите размер массива MxN [max(M,N) = %d min(M,N) = %d]\n",N,1); printf("Количество строк: "); scanf("%d", &m); printf("Количество столбцов: "); scanf("%d", &n); } while ((m<1 || n<1 || m>N || n>N) && printf("Размеры введены некорректно!\n")); for (i = 0;i<m;i++) { for (j = 0;j<n;j++) { printf("matrix[%d][%d]=", i + 1, j + 1); matrix[i][j] = strok(matrix[i][j]); } } printf("\n"); for (i = 0;i < m;i++) { for (j = 0;j < n;j++) printf("%3d ", matrix[i][j]); printf("\n"); } do { printf("\nВведите номера столбцов через пробел, которые нужно переставить: "); scanf("%d %d", &j1, &j2); } while ((j1<1 || j2<1 || j1>m || j2>n) && printf("Номера столбцов введены некорректно!\n")); printf("\n"); for (i = 0;i < m;i++) { temp = matrix[i][j1-1]; matrix[i][j1-1] = matrix[i][j2-1]; matrix[i][j2-1] = temp; } for (i = 0;i < m;i++) { for (j = 0;j < n;j++) printf("%3d ", matrix[i][j]); printf("\n"); } return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем размер матрицы NxN
- Функция strok считывает целочисленное значение из стандартного ввода и возвращает его
- Функция stolb выводит целочисленное значение в стандартный вывод, после чего возвращает 0
- В функции main устанавливаем кодировку консоли на 1251
- Инициализируем переменные m, n, i, j, j1, j2, temp со значениями 0
- В цикле do-while запрашиваем у пользователя ввод размеров матрицы MxN и проверяем корректность введенных значений
- Если размеры введены некорректно, выводим сообщение об ошибке и повторно запрашиваем ввод размеров
- Когда размеры введены корректно, считываем значения матрицы из стандартного ввода
- Выводим значения матрицы в консоль
- В цикле do-while запрашиваем у пользователя ввод номеров столбцов для перестановки и проверяем корректность введенных значений
- Если номера столбцов введены некорректно, выводим сообщение об ошибке и повторно запрашиваем ввод номеров столбцов
- Когда номера столбцов введены корректно, меняем значения элементов матрицы местами
- Выводим измененные значения матрицы в консоль
- Возвращаем 0, чтобы прекратить выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д