Переделать код для работы с матрицами, используя функции - C (СИ)

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

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

Оформите через функцию код:
#include <stdio.h>
#include <conio.h>
 
int main()
{int M=3, k, A[10][10], B[10][10], i, j, s=0;
    printf( "Nachalnaya matrica: \n" );
    for (i = 0; i < M; i++){
        for (j = 0; j < M; j++){
            scanf("%d", &A[i][j]);
        }
    }
    for (i = 0; i < M; i++){
        for (j = 0; j < M; j++){
if (i == 0 && j == 0) // вверх левый угол
{ B[i][j] = (A[i][j + 1] + A[i + 1][j] + A[i + 1][j + 1]) / 3;}
if ((i == 0) && (j == M - 1)) // вверх правый угол
{B[i][j] = (A[i][M - 2] + A[i + 1][M - 1] + A[i + 1] [M - 2]) / 3;}
if ((i == M - 1) && (j == 0)) // низ левый угол
{
B[i][j] = (A[M - 1] [j + 1] + A[M - 2][j] + A[M - 2][j + 1]) / 3;}
if ((i == M - 1) && (j == M - 1)) // низ правый угол
{
B[i][j] = (A[M - 1][M - 2] + A[M - 2][M - 1] + A[M - 2][M - 2]) / 3;
}
if (i == 0 && j != 0 && j != M - 1) // вверх
{
B[i][j] = (A[i][j - 1] + A[i][j + 1] + A[i + 1][j - 1] + A[i + 1][j] + A[i + 1][j + 1]) / 5;
}
if (i == M - 1 && j != 0 && j != M - 1) // низ
{
B[i][j] = (A[i][j - 1] + A[i][j + 1] + A[i - 1][j - 1] + A[i - 1][j] + A[i - 1][j + 1]) / 5;
}
if (i != 0 && i != M - 1 && j == 0) // левый край
{
B[i][j] = (A[i - 1][j] + A[i - 1][j + 1] + A[i][j + 1] + A[i + 1][j] + A[i + 1][j + 1]) / 5;
}
if (i != 0 && i != M - 1 && j == M - 1) // правый край
{
B[i][j] = (A[i - 1][j] + A[i - 1][j - 1] + A[i][j - 1] + A[i + 1][j] + A[i + 1][j - 1]) / 5;
}
if (i != 0 && i != M - 1 && j != 0 && j != M - 1) // общий случай
{
B[i][j] = (A[i - 1][j - 1] + A[i - 1][j] + A[i - 1][j + 1] + A[i][j - 1] + A[i][j] + A[i][j + 1] + A[i + 1][j - 1] + A[i + 1][j] + A[i + 1][j + 1]) / 9;
                     }
                 }
}
printf("Sglajennaya matrica:\n");
    for(i=0; i<M; i++)
    {
        for(j=0; j<M; j++)
            printf("%d ", B[i][j]);
        printf("\n");
    }
    for(i = 0; i < M; i++) 
for(j = 0; j < i; j++) 
s=s+fabs(B[i][j]);
printf("\n summa = %d",s); 
 
 getch();
    return 0;
}

Решение задачи: «Переделать код для работы с матрицами, используя функции»

textual
Листинг программы
#include <stdio.h>
 
int main()
{int A[10][10], B[10][10], buf, i, j, N=3, k;
    for(i=0; i<N; i++)
        for(j=0; j<N; j++)
        {
            printf("[%d][%d]= ", i, j);
            scanf("%d", &A[i][j]);
        }
    printf("Ishodnaya matrica:\n");
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
            printf("%d ", A[i][j]);
        printf("\n");
    }
    for(i=0; i<N; i++)
        for(j=0; j<N; j++)
        {
                buf=0; k=0;
                if(i>0)
                {
                        buf+=A[i-1][j];
                        k++;
                        if(j>0)
                        {
                            buf+=A[i-1][j-1];
                            k++;
                        }
                        if(j<N-1)
                        {
                            buf+=A[i-1][j+1];
                            k++;
                        }
                }
                if(i<N-1)
                {
                        buf+=A[i+1][j];
                        k++;
                        if(j>0)
                        {
                            buf+=A[i+1][j-1];
                            k++;
                        }
                        if(j<N-1)
                        {
                            buf+=A[i+1][j+1];                       
                            k++;
                        }
                }
                if(j>0)
                {
                    buf+=A[i][j-1];
                    k++;
                }
                if(j<N-1)
                {
                    buf+=A[i][j+1];
                    k++;
                }
                B[i][j]=buf/k;
        }
    printf("Sglajennaya matrica:\n");
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
            printf("%d ", B[i][j]);
        printf("\n");
    }
       for(i = 0; i < N; i++) 
              for(j = 0; j < i; j++) 
   s=s+fabs(B[i][j]);
   printf("\n summa = %d",s);
 getch();
    return 0;
}

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

  1. Объявление переменных:
    • A[10][10] - матрица размером 10x10 для хранения исходных данных;
    • B[10][10] - матрица размером 10x10 для хранения результатов;
    • buf - временная переменная для хранения суммы элементов матрицы;
    • i, j, N=3, k - вспомогательные переменные для циклов.
  2. Заполнение матрицы A с помощью scanf.
  3. Вывод исходной матрицы A с помощью printf.
  4. Обход матрицы A для вычисления суммы элементов в каждой ячейке матрицы B.
    • Если элемент находится вне матрицы (i<0 или i>N-1 или j<0 или j>N-1), то он не учитывается в расчете.
    • Для вычисления суммы элементов в строке i используются следующие элементы: A[i-1][j], A[i-1][j-1], A[i-1][j+1] (если они есть).
    • Для вычисления суммы элементов в столбце j используются следующие элементы: A[i][j-1], A[i][j+1] (если они есть).
  5. Вывод матрицы B с помощью printf.
  6. Вычисление суммы всех элементов матрицы B с помощью цикла.
  7. Вывод значения суммы с помощью printf.
  8. Использование функции getch для приостановки выполнения программы до нажатия клавиши.
  9. Возврат 0, что означает успешное выполнение программы.

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


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

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

9   голосов , оценка 4 из 5
Похожие ответы