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