Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Текст программы на языке ПаскальСодержание книги
Поиск на нашем сайте 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; просмотров: 137; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.214 (0.01 с.) |