Даны три матрицы. Напечатать ту из них, максимум абсолютных величин которой наименьший - C (СИ)
Формулировка задачи:
Подскажите,пожалуйста, где ошибки. Даны 3 матрицы.Напечатать ту из них, максимум абсолютных величин которой наименьший.
#include <stdio.h>
#include <conio.h>
void input_matr (int[10][10], char);
void print_matr (int[10][10], char);
int norma (int[10][10]);
int A[10][10], B[10][10],C[10][10];
int n;
int main ()
{
printf("? n="); scanf("%d",&n);
input_matr(A,'A');
input_matr(B,'B');
input_matr(C,'C');
if((norma(A)<norma(B)) && (norma(A)<norma(C)))
print_matr(A);
if((norma(B)<norma(A)) && (norma(B)<norma(C)))
print_matr(B);
if (norma(C)<norma(A) && (norma(C)<norma(B)))
print_matr(C);
)
void input_matr(int x[10][10],char Name)
{int i,j;
printf("vvod matrici%c\n",Name);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&x[i,j]);}
void print_matr(int x[10][10],char Name)
{int i,j;
pintf("matrica %c\n",Name);
for (i=0;i<n;i++)
{for (j=0;j<n;j++)
printf("%d\t",x[i][j]);
printf("/n");
}
}
int norma(int x[10][10],char Name )
{int i,j;
float max=fabs(x[1][1]]);
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
{if (max<fabs(x[i][j]))
{max=fabs(x[i][j])
}
}
}
return max;
}
}Решение задачи: «Даны три матрицы. Напечатать ту из них, максимум абсолютных величин которой наименьший»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <math.h>
void input_matr (int[10][10],int n, char);
void print_matr (int[10][10],int n, char);
int norma (int[10][10],int n);
int main ()
{
int A[10][10], B[10][10],C[10][10];
int n;
printf("? n="); scanf("%d",&n);
input_matr(A,n,'A');
input_matr(B,n,'B');
input_matr(C,n,'C');
if( norma(A,n)<norma(B,n) && norma(A,n)<norma(C,n) )
print_matr(A,n,'A');
else if( norma(B,n)<norma(A,n) && norma(B,n)<norma(C,n) )
print_matr(B,n,'B');
else
print_matr(C,n,'C');
return 0;
}
void input_matr(int x[10][10],int n,char Name)
{
int i,j;
printf("vvod matrici%c\n",Name);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&x[i][j]);
}
void print_matr(int x[10][10],int n,char Name)
{
int i,j;
printf("matrica %c\n",Name);
for (i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%d\t",x[i][j]);
printf("/n");
}
}
int norma(int x[10][10],int n)
{
int i,j,max;
max=abs(x[0][0]);
for (i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if (max<abs(x[i][j]))
max=abs(x[i][j]);
}
}
return max;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с консолью, математическими функциями и сканированием данных.
- Определяем функцию input_matr, которая принимает на вход матрицу, её размер и имя матрицы. Выводит приглашение для ввода элементов матрицы и считывает их с помощью функции scanf.
- Определяем функцию print_matr, которая принимает на вход матрицу, её размер и имя матрицы. Выводит название матрицы и её элементы в виде таблицы.
- Определяем функцию norma, которая принимает на вход матрицу, её размер и находит максимальное абсолютное значение элемента матрицы.
- В функции main считываем размер матрицы с помощью функции scanf.
- С помощью функции input_matr вводим элементы матриц A, B и C.
- С помощью функции norma находим максимальное абсолютное значение нормалей матриц A, B и C.
- С помощью условного оператора if-else выбираем матрицу с наименьшей нормой и выводим её с помощью функции print_matr.
- Возвращаем 0 из функции main, что означает корректный выход из программы.