Функция сложения двух матриц - 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;
}

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

  1. Включаются необходимые заголовочные файлы: , ,
  2. Задаются значения N и M (размеры матриц)
  3. Определяется функция Add, которая принимает два указателя на матрицы и возвращает указатель на новую матрицу, равную сумме исходных. Внутри функции объявляется временная матрица tmp, которая будет хранить результат. Затем, в цикле, происходит заполнение этой матрицы значениями суммы соответствующих элементов исходных матриц a и b.
  4. В функции main создаются две матрицы a и b, и заполняются с помощью scanf.
  5. Выводится на экран содержимое матрицы a.
  6. Выводится на экран содержимое матрицы b.
  7. Создается матрица ab как результат сложения a и b с помощью функции Add.
  8. Выводится на экран содержимое матрицы ab.
  9. В конце программы вызывается функция getch для приостановки выполнения программы до нажатия клавиши.
  10. Возвращается 0, что означает успешный конец работы программы.

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


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

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

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