Вычисление элементов матрицы оформить в подпрограмме - 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();
}

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

  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
Похожие ответы