Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 96; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.120.103 (0.006 с.) |