Транспонировать матрицу, поменять в ней 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();
}

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

  1. Подключение необходимых библиотек для работы с консолью и вводом-выводом данных.
  2. Объявление переменных m и n, которые будут использоваться для хранения количества строк и столбцов матрицы соответственно.
  3. Ввод пользователем количества строк и столбцов матрицы с помощью функции scanf.
  4. Выделение памяти под матрицу matr с помощью функции malloc.
  5. В цикле заполнение матрицы matr значениями, введенными пользователем.
  6. Вывод исходной матрицы на экран с помощью цикла и функции printf.
  7. Создание транспонированной матрицы matr1 с помощью функции malloc.
  8. В цикле заполнение транспонированной матрицы matr1 значениями из матрицы matr.
  9. Вывод транспонированной матрицы на экран с помощью цикла и функции printf.
  10. Ввод пользователем номера столбца, на который необходимо заменить первый столбец матрицы.
  11. В цикле замена значений в первом столбце матрицы matr1 на значения из выбранного столбца.
  12. Вывод измененной матрицы на экран с помощью цикла и функции printf.
  13. Создание массива mas для хранения результатов умножения значений из выбранного столбца на 3.
  14. В цикле заполнение массива mas значениями, полученными в результате умножения.
  15. Вывод массива mas на экран с помощью цикла и функции printf.
  16. Блокировка программы до нажатия клавиши.

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


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

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

14   голосов , оценка 4.214 из 5
Похожие ответы