Задача на ЯП Turbo Pascal
Информатика, pascal
"Если заданная квадратная целочисленная матрица является треугольной (элементы выше главной диагонали равны нулю), вычислить ее среднее арифметическое, иначе определить, сколько элементов, лежащих выше главной диагонали, отличны от нуля."
Задачу я решил. Но есть небольшая проблема.Преподаватель от меня требует сперва проверить матрицу на треугольность, с использованием логического типа. Подскажите мне как это реализовать!
Вот текст моей программы.
TYPE VEC=ARRAY[1..100,1..100] OF REAL;
VAR A:VEC;
SR,KOL:REAL;
I,J,N:INTEGER;
F1,F2:TEXT;
FUNCTION PKOL(VAR A:VEC;N:INTEGER):REAL;
VAR
I,J:INTEGER;
BEGIN
KOL:=0;
FOR I:=1 TO N-1 DO
BEGIN
FOR J:=I+1 TO N DO
BEGIN
IF A[I,J]<>0 THEN
BEGIN
KOL:=KOL+1
END
END
END;
PKOL:=KOL
END;
FUNCTION PSR(VAR A:VEC;N:INTEGER):REAL;
VAR S:REAL;
I,J:INTEGER;
BEGIN
S:=0;
FOR I:=1 TO N DO
BEGIN
FOR J:=1 TO N DO
BEGIN
S:=S+A[I,J]
END
END;
SR:=S/SQR(N);
PSR:=SR
END;
BEGIN
ASSIGN(F1,'ISDAN1.PAS');
ASSIGN(F2,'VDAN1.PAS');
RESET(F1);
REWRITE(F2);
WRITELN('Введите колличество строк и столбцов');
READLN(N);
FOR I:=1 TO N DO
BEGIN
FOR J:=1 TO N DO
READ(F1,A[I,J]);
READLN(F1)
END;
WRITELN(F2,' ':35,'PE3YJIbTATbI');
WRITELN(F2);
PKOL(A,N);
IF KOL=0 THEN
BEGIN
PSR(A,N);
WRITELN(F2,' ':25,'SR=',SR:7:3)
END
ELSE
BEGIN
PKOL(A,N);
WRITELN(F2,' ':25,'KOL=',KOL:7:3)
END;
CLOSE(F1);
CLOSE(F2)
END.
function is_triangle(const a: vec):boolean;
var
row,col:integer;
begin
for row:=2 to 100 do
for col:=1 to row-1 do
if a[row,col] <> 0 then begin
result:=false;
exit;
end;
result:=true;
end;
Сайт создан в системе
uCoz