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

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
brouken
Сообщения: 23
Зарегистрирован: 18 май 2008, 13:14

Условие:
Изображение
Мой вариант решения:

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

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.
Выводит не то что нужно. Помогите исправить ошибки пожалуйсто? Тысячу спасиб тому кто поможет :)
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

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