Теги для перехода

Информатикамагазиныdatabaseшахматыrdpмифологияправительство

Задача на ЯП 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;
Вернуться на главную Вернуться в раздел
© 2010 Анна Мигунова Карта сайта
Сайт создан в системе uCoz