Для заданной матрицы А размерности 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, чтобы прекратить выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д