Технический форум

Технический форум (http://www.tehnari.ru/index.php)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/forumdisplay.php?f=43)
-   -   Если целочисленная квадратная матрица симметрична относительно главной диагонали... (http://www.tehnari.ru/showthread.php?t=102070)

Over77over 15.04.2015 23:18

Если целочисленная квадратная матрица симметрична относительно главной диагонали...
 
Помогите пожалуйста решить задачу на Паскале.

Если целочисленная квадратная матрица симметрична относительно главной диагонали, обнулить все элементы,лежащие выше главной диагонали.и определить сумму элементов, лежащих ниже главной диагонали

Вот на фортране:

!simmetrichna li matriza
logical function PP1(A,n)
dimension A(n,n)
integer I,J,A
logical fl
fl=.true.
I=1
do while (I<=n-1.and.fl)
J=I+1
do while (J<=n.and.fl)
if (A(I,J)/=A(J,I)) then
fl=.false.
end if
J=J+1
end do
I=I+1
end do
PP1=fl
write (,) fl
end

!obnylit vse elementi vishe glavnoi diagonali
subroutine PP2(A,n)
dimension A(n,n)
integer I,J,A
do I=1,n-1
do J=I+1,n
A(I,J)=0
end do
end do
end


!naiti symmy elementov nizhe glavnoi diagonali
subroutine PP3(A,n,s)
dimension A(n,n)
integer I,J,A,s
s=0
do J=1,n-1
do I=J+1,n
s=s+A(I,J)
end do
end do
end


dimension A(5,5)
integer I,J,A,s
logical fl,PP1
data A/1,2,3,1,3,2,3,4,9,4,3,4,5,8,5,1,9,8,7,6,3,4,5,6,1/
write (,) 'ishod matriza'
write (*,36) ((A(I,J),J=1,5),I=1,5)
36 format (5(1x,I3))
fl= PP1(A,5)
write (,) fl
if (fl) then
write (,) 'matriza simmetrichna'
call PP2(A,5)
write (*,26) ((A(I,J),J=1,5),I=1,5)
26 format (1x,'izmen matriza'/5(1x,I3))
call PP3 (A,5,s)
write (*,16) s
16 format (1x,'s=',I4)
else
write (,) 'matriza ne simmetrichna'
end if
end

Vladimir_S 16.04.2015 10:49

Цитата:

Сообщение от Over77over (Сообщение 1121907)
Помогите пожалуйста решить задачу на Паскале. Если целочисленная квадратная матрица симметрична относительно главной диагонали, обнулить все элементы,лежащие выше главной диагонали.и определить сумму элементов, лежащих ниже главной диагонали

Код:

Const
 N=5;

Type
 Matr=Array[1..N, 1..N] of Integer;

Var
 A:Matr;
 i,j,k,Sum:Integer;

Function Symm(Q:Matr):Boolean;
var
 i,j:Integer;
 bu:boolean;
begin
 i:=0;
 bu:=TRUE;
 repeat
  Inc(i);
  j:=0;
  repeat
  Inc(j);
  bu:=Q[i,j]=Q[j,i];
  until bu=FALSE or (j=N);
 until bu=FALSE or (i=N);
 Symm:=bu;
end;

Begin
 for i:=1 to N do
  for j:=1 to N do
  begin
    write('A[',i,',',j,'] = ');
    readln(A[i,j]);
  end;
 Writeln;

 Writeln('Initial matrix:');
 for i:=1 to N do
  begin
  for j:=1 to N do write(A[i,j]:4);
  writeln;
  end;
 Writeln;

 If Symm(A) then
  begin
  Sum:=0;
  Writeln('New matrix:');
  for i:=1 to N do
    begin
    for j:=1 to N do
      begin
      if j>i then A[i,j]:=0;
      if j<i then Inc(Sum,A[i,j]);
      write(A[i,j]:4);
      end;
    writeln;
    end;
  Writeln;
  Writeln('Sum = ',Sum);
  end
 else
  Writeln('Matrix is asymmetric');
 Readln
End.



Часовой пояс GMT +4, время: 23:02.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.