Страница 1 из 1

Даны три матрицы... (функции)

Добавлено: 22 май 2008, 22:29
brouken
Условие:
Изображение
Мой вариант решения:

Код: Выделить всё

program ersdf;
uses crt;
function max(s:real;i,j:integer):real;
var a:array[1..4,1..3] of real;
begin
for i:=1 to 4 do
begin
for j:=1 to 3 do
begin
s:=s+abs(a[i,j]);
max:=s;
end;
end;
end;
function mat(n,m:integer):real;
var i,j:integer; a:array[1..4,1..3] of real;
begin
writeln('vvod matrici:');
m:=3;
n:=4;
for i:=1 to n do
begin
for j:=1 to m do
begin
read(a[i,j]);
end;end;
end;
var a,b,c:real;
i,s,j:integer;s1,s2,s3,vmax:real;m,n:integer;
begin
clrscr;
a:=mat(m,n);
readln(a);
s1:=max(s,i,j);
b:=mat(m,n);
readln(b);
s2:=max(s,i,j);
c:=mat(m,n);
readln(c);
s3:=max(s,i,j);
if s1>s2 then vmax:=s1 else vmax:=s2;
if s3>vmax then vmax:=s3;
writeln('max=',vmax);
end.
Выводит не то что нужно. Помогите исправить ошибки пожалуйсто? Тысячу спасиб тому кто поможет :)

Re: Даны три матрицы... (функции)

Добавлено: 23 май 2008, 11:23
Хыиуду
1. Делайте отступы, чтобы было понятно, где у вас начинаются и кончаются циклы и подпрограммы. Самим же удобнее будет.
2. Напомните, пожалуйста, что есть норма матрицы?
3. Зачем у вас mat объявлена как функция, если она ничего не возвращает? Сделайте ее процедурой.
4. Зачем в mat передавать m и n, если они жестко заданы, да к тому же сразу присваиваются в начале?
5. В функции max вы перепутали глобальные и локальные переменные. s,i,j надо объявить внутри функции, а массив a - передавать параметром. Кстати, название функции не отражает суть: сумма модулей элементов и максимум - разные вещи.