Функция сложения двух матриц - C (СИ)
Формулировка задачи:
Здравствуйте, нужна ваша помощь с функцией для программы сложения двух матриц, сама программа ниже, работает, а вот с функцией я запутался. Заранее спасибо
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- void main(int i,int j,int m,int n,int k, int z)
- {
- printf("Input please K: ", &k);
- scanf("%d", &k);
- printf("Input please M: ", &m);
- scanf("%d", &m);
- printf("Input please N: ", &n);
- scanf("%d", &n);
- //1
- int A[k][m];
- for(i=0;i<k;i++)
- {
- for(j=0;j<m;j++)
- {
- printf("Input please A[%d][%d]: ", i, j);
- scanf("%d", &A[i][j]);
- }}
- //2
- int B[m][n];
- for(i=0;i<m;i++)
- for(j=0;j<n;j++)
- {
- printf("Input please B[%d][%d]: ", i, j);
- scanf("%d", &B[i][j]);
- }
- // vivod a,b
- for(i=0;i<k;i++)
- { printf("\n");
- for(j=0;j<m;j++)
- {
- printf("%5d", A[i][j]);
- }}
- for(i=0;i<m;i++)
- { printf("\n");
- for(j=0;j<n;j++)
- {
- printf("%5d", B[i][j]);
- }}
- //3
- int S [k][n];
- for(i=0;i<k;i++)
- {
- for(j=0;j<n;j++)
- {
- S[i][j]=A[i][j]+B[i][j];
- }}
- for(i=0;i<k;i++)
- {
- for(j=0;j<n;j++)
- { printf("\n");
- printf("%5d", S[i][j]);
- }}
- system("PAUSE");
- return 0;
- }
Решение задачи: «Функция сложения двух матриц»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #define N 3
- #define M 2
- int **Add(int **a, int **b)
- {
- int i,j;
- int **tmp = (int**)malloc(sizeof(int*) * N);
- for(i = 0; i < N; i++)
- {
- tmp[i] = (int*)malloc(sizeof(int) * M);
- for(j = 0; j < M; j++)
- tmp[i][j] = a[i][j] + b[i][j];
- }
- return tmp;
- }
- int main()
- {
- int **a = (int**)malloc(sizeof(int*) * N);
- int **b = (int**)malloc(sizeof(int*) * N);
- int i,j;
- for(i = 0; i < N; i++)
- {
- a[i] = (int*)malloc(sizeof(int) * M);
- for(j = 0; j < M; j++)
- {
- printf("Input please A[%d][%d]: ", i, j);
- scanf("%d",&a[i][j]);
- }
- }
- for(i = 0; i < N; i++)
- {
- b[i] = (int*)malloc(sizeof(int) * M);
- for(j = 0; j < M; j++)
- {
- printf("Input please B[%d][%d]: ", i, j);
- scanf("%d",&b[i][j]);
- }
- }
- printf("\n");
- for(i = 0; i < N; i++)
- {
- for(j = 0; j < M; j++)
- printf("%5d",a[i][j]);
- printf("\n");
- }
- printf("\n");
- for(i = 0; i < N; i++)
- {
- for(j = 0; j < M; j++)
- printf("%5d",b[i][j]);
- printf("\n");
- }
- int **ab = Add(a,b);
- printf("\n");
- for(i = 0; i < N; i++)
- {
- for(j = 0; j < M; j++)
- printf("%5d",ab[i][j]);
- printf("\n");
- }
- getch();
- return 0;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
, , - Задаются значения N и M (размеры матриц)
- Определяется функция Add, которая принимает два указателя на матрицы и возвращает указатель на новую матрицу, равную сумме исходных. Внутри функции объявляется временная матрица tmp, которая будет хранить результат. Затем, в цикле, происходит заполнение этой матрицы значениями суммы соответствующих элементов исходных матриц a и b.
- В функции main создаются две матрицы a и b, и заполняются с помощью scanf.
- Выводится на экран содержимое матрицы a.
- Выводится на экран содержимое матрицы b.
- Создается матрица ab как результат сложения a и b с помощью функции Add.
- Выводится на экран содержимое матрицы ab.
- В конце программы вызывается функция getch для приостановки выполнения программы до нажатия клавиши.
- Возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д