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