Вычисление элементов матрицы оформить в подпрограмме - C (СИ)
Формулировка задачи:
Написал простенькую прогу с вычислением всех элементов в матрице. Но нужно чтобы вычисления производились в подпрограмме, а результат возвращался в основную программу. Как это сделать? Подскажите, плз.
Листинг (язык Си):
Срочно нужно.
Листинг программы
- #include <stdio.h>
- main ()
- {
- double m[100][100],sum;
- int n,a,b;
- printf("Vvod n\n"); //ввод значений
- scanf("%d",&n);
- for(a=0;a<n;a++)
- {
- for (b=0;b<n;b++)
- {printf("Vvod A[%d][%d]\n",a+1,b+1);
- scanf("%lf",&m[a][b]);}
- }
- for(b=0;b<n;b++) //демонстрация матрицы
- {
- for (a=0;a<n;a++)
- {printf("%lf\t",m[a][b]);}
- printf("\n");
- }
- for(b=0;b<n;b++) //вычисление суммы всех элементов
- {
- for (a=0;a<n;a++)
- sum+=m[a][b];
- }
- printf("\nREZ:%lf",sum);
- }
Решение задачи: «Вычисление элементов матрицы оформить в подпрограмме»
textual
Листинг программы
- #include <stdio.h>
- #include <malloc.h>
- #include <conio.h>
- double summa(double **arr, int n)
- {
- double sum = 0;
- for(int i = 0; i < n; ++i) //âû÷èñëåГ*ГЁГҐ ñóììû ГўГ±ГҐГµ ýëåìåГ*òîâ
- {
- for (int j = 0; j < n; ++j)
- sum += arr[i][j];
- }
- return sum;
- }
- main ()
- {
- int n;
- printf("Vvod n\n"); //ââîä Г§Г*Г*Г·ГҐГ*ГЁГ©
- scanf("%d",&n);
- double **arr = (double **)malloc(n*sizeof(double*));
- if(arr)
- {
- for(int i = 0; i < n; ++i)
- {
- arr[i] = (double*)malloc(n*sizeof(int));
- if(!arr[i])
- {
- for(int i = 0; i < n; ++i)
- free(arr[i]);
- return 0;
- }
- for (int j = 0; j < n; ++j)
- {
- printf("Vvod A[%d][%d]\n",i+1,j+1);
- scanf("%lf",&arr[i][j]);
- }
- }
- }
- for(int i = 0; i < n; ++i) //äåìîГ*Г±ГІГ°Г*Г¶ГЁГї Г¬Г*òðèöû
- {
- for (int j = 0; j < n; ++j)
- printf("%lf\t",arr[i][j]);
- printf("\n");
- }
- /*for(b=0;b<n;b++) //âû÷èñëåГ*ГЁГҐ ñóììû ГўГ±ГҐГµ ýëåìåГ*òîâ
- {
- for (a=0;a<n;a++)
- sum+=m[a][b];
- }*/
- double sum = summa(arr, n);
- printf("\nREZ:%lf",sum);
- getch();
- }
Объяснение кода листинга программы
- В функции
main
программа запрашивает у пользователя ввод размера матрицы с помощью функцииprintf
и функцииscanf
. - Затем программа выделяет память под матрицу с помощью функции
malloc
. - Если память успешно выделена, программа запрашивает у пользователя ввод всех элементов матрицы с помощью функции
printf
и функцииscanf
. - После ввода всех элементов программа выводит матрицу на экран с помощью функции
printf
. - Затем программа вычисляет сумму всех элементов матрицы с помощью функции
summa
и выводит результат на экран с помощью функцииprintf
. - В функции
summa
программа инициализирует переменнуюsum
значением 0. - Затем программа перебирает все элементы матрицы с помощью двух вложенных циклов
for
. - Внутри циклов происходит суммирование элементов матрицы с помощью оператора
+=
. - После завершения циклов функция возвращает значение переменной
sum
. - В функции
main
программа вычисляет сумму всех элементов матрицы с помощью функцииsumma
и выводит результат на экран с помощью функцииprintf
. - Затем программа выводит на экран строку
REZ:
и ожидает ввода пользователем команды завершения программы с помощью функцииgetch
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д