Транспонировать матрицу, поменять в ней 1й столбец на столбец с заданным номером - C (СИ)
Формулировка задачи:
Помогите пожалуйста!
Задать двумерный массив MxN
Транспонировать матрицу, поменять в ней 1й столбец на столбец с заданным номером.
Строку с заданным номером записать в массив умножив все элементы на 3.
Например:
была матрица-
3102
3412
1045
после транспонирования получилась-
331
140
014
225
После смены столбца (Столбец 3):
131
040
414
525
Решение задачи: «Транспонировать матрицу, поменять в ней 1й столбец на столбец с заданным номером»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <iostream> #include <malloc.h> void main() { setlocale (0,""); int m; int n; printf ("Введите количество строк\n"); scanf ("%i",&m); printf ("Введите количество столбцов\n"); scanf ("%i",&n); int ** matr = (int**)malloc(m*(sizeof(int))); for (int i=0; i<m; i++) { matr[i] = (int*)malloc(n*(sizeof(int))); } int ** matr1 = (int**)malloc(n*(sizeof(int))); //транспонированная for (int i=0; i<n; i++) { matr1[i] = (int*)malloc(m*(sizeof(int))); } int * mas = (int*)malloc(m*(sizeof(int))); // массив для записи элемента строки в конце for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { printf ("введите matr[%i][%i]",i,j); scanf ("%i",&matr[i][j]); } } printf ("Исходная\n"); for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { printf ("%i ",matr[i][j]); } printf ("\n"); } for (int i=0; i<n;i++) { for (int j=0; j<m; j++) { matr1[i][j]=matr[j][i]; } } printf ("Транспонированная:\n"); for (int i=0; i<n;i++) { for (int j=0; j<m; j++) { printf ("%i ",matr1[i][j]); } printf ("\n"); } printf ("Введите столбец,на который надо заменить первый\n"); int number; scanf ("%i",&number); for (int i=0; i<n;i++) { matr1[i][0] = matr1[i][number-1]; // number -1 для удобного зрительного восприятия, так как нумерация начинается с нуля } printf ("Поменяли столбцы\n"); for (int i=0; i<n;i++) { for (int j=0; j<m; j++) { printf ("%i ",matr1[i][j]); } printf ("\n"); } printf ("Массив\n"); for (int i=0; i<n; i++) { mas[i] = (matr1[i][number-1] * 3); printf ("%i ",mas[i]); } _getch(); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью и вводом-выводом данных.
- Объявление переменных m и n, которые будут использоваться для хранения количества строк и столбцов матрицы соответственно.
- Ввод пользователем количества строк и столбцов матрицы с помощью функции scanf.
- Выделение памяти под матрицу matr с помощью функции malloc.
- В цикле заполнение матрицы matr значениями, введенными пользователем.
- Вывод исходной матрицы на экран с помощью цикла и функции printf.
- Создание транспонированной матрицы matr1 с помощью функции malloc.
- В цикле заполнение транспонированной матрицы matr1 значениями из матрицы matr.
- Вывод транспонированной матрицы на экран с помощью цикла и функции printf.
- Ввод пользователем номера столбца, на который необходимо заменить первый столбец матрицы.
- В цикле замена значений в первом столбце матрицы matr1 на значения из выбранного столбца.
- Вывод измененной матрицы на экран с помощью цикла и функции printf.
- Создание массива mas для хранения результатов умножения значений из выбранного столбца на 3.
- В цикле заполнение массива mas значениями, полученными в результате умножения.
- Вывод массива mas на экран с помощью цикла и функции printf.
- Блокировка программы до нажатия клавиши.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д