Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Текст программы на языке Паскаль

Поиск

Program Main_51;

uses

sysutils;

type

TRealQuadMatrix = array of array of Real;

var

Na, Nb: Integer;

A, B: TRealQuadMatrix;

SumA, SumB: Real;

 

{ Возвращает False при ошибке и True при удачном

                 вводе матрицы}

function InputRealQuadMatrix(N: Integer;

MatrName: string; var M: TRealQuadMatrix):

                             Boolean;

var

i, j: Integer;

begin

InputRealQuadMatrix:= False;

if N > 0 then

begin

SetLength(M, N);

for i:= 0 to N-1 do

begin

SetLength(M[i],N);

for j:= 0 to N-1 do

begin

   write('Введите ',MatrName,

     '[',i+1,',',j+1,']: ');

   readln(M[i,j]);

end;

end;

InputRealQuadMatrix:= True;

end;

end;

 

procedure OutputRealQuadMatrix(MatrName: string;

  M: TRealQuadMatrix; N: Integer);

var

i, j: Integer;

begin

for i:= 0 to N-1 do

begin

for j:= 0 to N-1 do

write(MatrName,'[',i+1,',',j+1,']=',

   M[i,j]:8:3,' ');

writeln;

end;

end;

 

function sum_diag(M: TRealQuadMatrix; N: Integer):Real;

var

S: Real;

i: Integer;

begin

S:= 0;

for i:= 0 to N-1 do

S:= S + M[i,i] + M[i,N-i-1];

if N mod 2 = 1 then

S:= S - M[N div 2, N div 2];

sum_diag:= S;

end;

 

begin

SetLength(A,0);

SetLength(B,0);

write('Введите число строк матрицы A: ');

readln(Na);

if not InputRealQuadMatrix(Na, 'A', A) then

abort;

write('Введите число строк матрицы B: ');

readln(Nb);

if not InputRealQuadMatrix(Nb, 'B', B) then

abort;

writeln('Исходная матрица A:');

OutputRealQuadMatrix('A', A, Na);

writeln('Исходная матрица B:');

OutputRealQuadMatrix('B', B, Nb);

SumA:= sum_diag(A, Na);

SumB:= sum_diag(B, Nb);

if SumA > SumB then

begin

write('Сумма элементов главной ');

write('и побочной диагоналей ');

write('первой матрицы больше, ');

writeln('чем второй.');

end

else

begin

if SumA < SumB then

begin

write('Сумма элементов главной ');

write('и побочной диагоналей ');

write('второй матрицы больше, ');

writeln('чем первой.');

end

else

begin

write('Сумма элементов главной ');

write('и побочной диагоналей ');

write('первой матрицы равна ');

write('cумме элементов главной ');

write('и побочной диагоналей ');

writeln('второй матрицы.');

end;

end;

SetLength(A,0);

SetLength(B,0);

end.

Вариант процедуры вывода матрицы в виде таблицы

procedure OutputRealQuadMatrixM(Name: string;

M: TRealQuadMatrix; N: Integer);

Var

i, j: Integer;

Begin

writeln(Name);

for i:= 0 to N-1 do

begin

for j:= 0 to N-1 do

write(M[i,j]:8:3,' ');

writeln;

end;

end;

Текст программы на языке Фортран

Program main_51

Implicit none

real, allocatable:: A(:,:),B(:,:)

integer Na,Nb

real sum_diag,SumA, SumB

print*,'Введите число строк матрицы A:'

read*,Na

allocate(A(Na,Na))

call InputRealQuadMatrix(Na,'A',A);

print*,'Введите число строк матрицы B:'

read*,Nb

allocate(B(Nb,Nb))

call InputRealQuadMatrix(Nb,'B',B);

print*,'Исходная матрица A:'

call OutputRealQuadMatrix('A',A,Na)

print*,' Исходная матрица B:'

call OutputRealQuadMatrix('B',B,Nb)

SumA=sum_diag(A, Na)

SumB=sum_diag(B, Nb)

if (SumA>SumB)then

print*,'Сумма элементов главной и побочной'

print*,'диагоналей первой матрицы больше,'

print*,' чем второй.'

else if (SumA<SumB)then

print*,'Сумма элементов главной и побочной '

print*,'диагоналей второй матрицы больше, '

print*,' чем первой.'

else

print *,'Сумма элементов главной и побочной '

print *,'диагоналей первой матрицы равна '

print *,'cумме элементов главной и побочной'

print *,' диагоналей второй матрицы.'

endif

deallocate(A)

deallocate(B)

end

 

Subroutine InputRealQuadMatrix(N,MatrName,X)

Implicit none

integer,intent(in)::N

Character(*),intent(in)::MatrName

real,intent(out)::X(N,N)

integer i,j

do i=1,N

do j=1,N

  print '(1x,A,A,A,I1,A,I1,A)','Введите ', &

        MatrName,'[',i,',',j,']='

  read*,X(i,j)

enddo

enddo

 end

 

Subroutine OutputRealQuadMatrix(MatrName,X,N)

Implicit none

integer,intent(in)::N

Character(*),intent(in)::MatrName

real,intent(in)::X(N,N)

integer i,j

do i=1,N

do j=1,N

print '(A,A,I1,A,I1,A,F3.0)',MatrName,'[',i,',',j,']=',X(i,j)  

enddo

enddo

end

 

Real function sum_diag(A,N)

Implicit none

integer,intent(in)::N

real,intent(in)::A(N,N)

integer i

real S

S=0

do i=1,N

S=S+A(i,i)+A(i,N-i+1)   

enddo

if (mod(N,2)==1) then

S=S-A(N/2+1,N/2+1)

endif

sum_diag=S

end

Вариант подпрограммы вывода матрицы в виде таблицы

Subroutine OutputRealQuadMatrix(MatrName,X,N)

Implicit none

integer,intent(in)::N

Character(*),intent(in)::MatrName

real,intent(in)::X(N,N)

integer i,j

print *, MatrName

do i=1,N

print '(<N>F5.1)',(X(i,j),j=1,N)  

enddo

end



Поделиться:


Последнее изменение этой страницы: 2021-04-12; просмотров: 96; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.120.103 (0.006 с.)