Вычисление элементов матрицы оформить в подпрограмме - C (СИ)

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

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

Написал простенькую прогу с вычислением всех элементов в матрице. Но нужно чтобы вычисления производились в подпрограмме, а результат возвращался в основную программу. Как это сделать? Подскажите, плз. Листинг (язык Си):
Листинг программы
  1. #include <stdio.h>
  2. main ()
  3. {
  4. double m[100][100],sum;
  5. int n,a,b;
  6. printf("Vvod n\n"); //ввод значений
  7. scanf("%d",&n);
  8. for(a=0;a<n;a++)
  9. {
  10. for (b=0;b<n;b++)
  11. {printf("Vvod A[%d][%d]\n",a+1,b+1);
  12. scanf("%lf",&m[a][b]);}
  13. }
  14. for(b=0;b<n;b++) //демонстрация матрицы
  15. {
  16. for (a=0;a<n;a++)
  17. {printf("%lf\t",m[a][b]);}
  18. printf("\n");
  19. }
  20. for(b=0;b<n;b++) //вычисление суммы всех элементов
  21. {
  22. for (a=0;a<n;a++)
  23. sum+=m[a][b];
  24. }
  25. printf("\nREZ:%lf",sum);
  26. }
Срочно нужно.

Решение задачи: «Вычисление элементов матрицы оформить в подпрограмме»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <malloc.h>
  3. #include <conio.h>
  4.  
  5. double summa(double **arr, int n)
  6. {
  7.     double sum = 0;
  8.     for(int i = 0; i < n; ++i)                     //âû÷èñëåГ*ГЁГҐ ñóììû ГўГ±ГҐГµ ýëåìåГ*òîâ
  9.     {
  10.         for (int j = 0; j < n; ++j)
  11.             sum += arr[i][j];
  12.     }
  13.     return sum;
  14. }
  15.    
  16. main ()
  17. {
  18.     int n;
  19.     printf("Vvod n\n");                     //ââîä Г§Г*Г*Г·ГҐГ*ГЁГ©
  20.     scanf("%d",&n);
  21.     double **arr = (double **)malloc(n*sizeof(double*));
  22.     if(arr)
  23.     {
  24.         for(int i = 0; i < n; ++i)
  25.         {
  26.             arr[i] = (double*)malloc(n*sizeof(int));
  27.             if(!arr[i])
  28.             {
  29.                 for(int i = 0; i < n; ++i)
  30.                 free(arr[i]);
  31.                 return 0;
  32.             }
  33.             for (int j = 0; j < n; ++j)
  34.             {
  35.                 printf("Vvod A[%d][%d]\n",i+1,j+1);
  36.                 scanf("%lf",&arr[i][j]);
  37.             }
  38.         }
  39.     }
  40.     for(int i = 0; i < n; ++i)                      //äåìîГ*Г±ГІГ°Г*Г¶ГЁГї Г¬Г*òðèöû
  41.     {
  42.         for (int j = 0; j < n; ++j)
  43.             printf("%lf\t",arr[i][j]);
  44.         printf("\n");
  45.     }
  46.     /*for(b=0;b<n;b++)                     //âû÷èñëåГ*ГЁГҐ ñóììû ГўГ±ГҐГµ ýëåìåГ*òîâ
  47.     {
  48.         for (a=0;a<n;a++)
  49.             sum+=m[a][b];
  50.     }*/
  51.     double sum = summa(arr, n);
  52.     printf("\nREZ:%lf",sum);
  53.     getch();
  54. }

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

  1. В функции main программа запрашивает у пользователя ввод размера матрицы с помощью функции printf и функции scanf.
  2. Затем программа выделяет память под матрицу с помощью функции malloc.
  3. Если память успешно выделена, программа запрашивает у пользователя ввод всех элементов матрицы с помощью функции printf и функции scanf.
  4. После ввода всех элементов программа выводит матрицу на экран с помощью функции printf.
  5. Затем программа вычисляет сумму всех элементов матрицы с помощью функции summa и выводит результат на экран с помощью функции printf.
  6. В функции summa программа инициализирует переменную sum значением 0.
  7. Затем программа перебирает все элементы матрицы с помощью двух вложенных циклов for.
  8. Внутри циклов происходит суммирование элементов матрицы с помощью оператора +=.
  9. После завершения циклов функция возвращает значение переменной sum.
  10. В функции main программа вычисляет сумму всех элементов матрицы с помощью функции summa и выводит результат на экран с помощью функции printf.
  11. Затем программа выводит на экран строку REZ: и ожидает ввода пользователем команды завершения программы с помощью функции getch.

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


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

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

15   голосов , оценка 4.133 из 5

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

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

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