Функция сложения двух матриц - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, нужна ваша помощь с функцией для программы сложения двух матриц, сама программа ниже, работает, а вот с функцией я запутался. Заранее спасибо
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. void main(int i,int j,int m,int n,int k, int z)
  5. {
  6. printf("Input please K: ", &k);
  7. scanf("%d", &k);
  8. printf("Input please M: ", &m);
  9. scanf("%d", &m);
  10. printf("Input please N: ", &n);
  11. scanf("%d", &n);
  12. //1
  13. int A[k][m];
  14. for(i=0;i<k;i++)
  15. {
  16. for(j=0;j<m;j++)
  17. {
  18. printf("Input please A[%d][%d]: ", i, j);
  19. scanf("%d", &A[i][j]);
  20. }}
  21. //2
  22. int B[m][n];
  23. for(i=0;i<m;i++)
  24. for(j=0;j<n;j++)
  25. {
  26. printf("Input please B[%d][%d]: ", i, j);
  27. scanf("%d", &B[i][j]);
  28. }
  29. // vivod a,b
  30. for(i=0;i<k;i++)
  31. { printf("\n");
  32. for(j=0;j<m;j++)
  33. {
  34. printf("%5d", A[i][j]);
  35. }}
  36. for(i=0;i<m;i++)
  37. { printf("\n");
  38. for(j=0;j<n;j++)
  39. {
  40. printf("%5d", B[i][j]);
  41. }}
  42. //3
  43. int S [k][n];
  44. for(i=0;i<k;i++)
  45. {
  46. for(j=0;j<n;j++)
  47. {
  48. S[i][j]=A[i][j]+B[i][j];
  49. }}
  50. for(i=0;i<k;i++)
  51. {
  52. for(j=0;j<n;j++)
  53. { printf("\n");
  54. printf("%5d", S[i][j]);
  55. }}
  56. system("PAUSE");
  57. return 0;
  58. }

Решение задачи: «Функция сложения двух матриц»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #define N 3
  5. #define M 2
  6. int **Add(int **a, int **b)
  7. {
  8.     int i,j;
  9.     int **tmp = (int**)malloc(sizeof(int*) * N);
  10.     for(i = 0; i < N; i++)
  11.     {
  12.         tmp[i] = (int*)malloc(sizeof(int) * M);
  13.         for(j = 0; j < M; j++)
  14.             tmp[i][j] = a[i][j] + b[i][j];
  15.     }
  16.     return tmp;
  17. }
  18.  
  19. int main()
  20. {
  21.     int **a = (int**)malloc(sizeof(int*) * N);
  22.     int **b = (int**)malloc(sizeof(int*) * N);
  23.     int i,j;
  24.     for(i = 0; i < N; i++)
  25.     {
  26.         a[i] = (int*)malloc(sizeof(int) * M);
  27.         for(j = 0; j < M; j++)
  28.         {
  29.             printf("Input please A[%d][%d]: ", i, j);
  30.             scanf("%d",&a[i][j]);
  31.         }
  32.     }
  33.     for(i = 0; i < N; i++)
  34.     {
  35.         b[i] = (int*)malloc(sizeof(int) * M);
  36.         for(j = 0; j < M; j++)
  37.         {
  38.             printf("Input please B[%d][%d]: ", i, j);
  39.             scanf("%d",&b[i][j]);
  40.         }
  41.     }
  42.     printf("\n");
  43.     for(i = 0; i < N; i++)
  44.     {
  45.         for(j = 0; j < M; j++)
  46.             printf("%5d",a[i][j]);
  47.         printf("\n");
  48.     }
  49.     printf("\n");
  50.     for(i = 0; i < N; i++)
  51.     {
  52.         for(j = 0; j < M; j++)
  53.             printf("%5d",b[i][j]);
  54.         printf("\n");
  55.     }
  56.     int **ab = Add(a,b);
  57.     printf("\n");
  58.     for(i = 0; i < N; i++)
  59.     {
  60.         for(j = 0; j < M; j++)
  61.             printf("%5d",ab[i][j]);
  62.         printf("\n");
  63.     }
  64.     getch();
  65.     return 0;
  66. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы