Заданны массивы А(4,4)и B(5,5). Для каждого массива вычислить среднее арифметическое положительных элементов расположенных на главной диагонали
Категория: Delphi/Pascal
2012-01-04 16:59:16
Ввод оформить в виде процедуры, поиск среднего арифметического в виде функции.
code: #pascal
uses crt; const Max=20; type MemArrNM=array[1..Max,1..Max] of ^integer; pMemArrNM=^MemArrNM; var a,b:pMemArrNM; Sr:real; procedure FillArrayNxM(const First,N,M:integer; var p:PMemArrNM); var i,j:integer; tmp:MemArrNM; begin randomize; for i:=First to N do for j:=First to M do begin new(tmp[i,j]); tmp[i,j]^:=random(100)-50; end; p:=@tmp; end; function SrArMainDiag(const First,N,M:integer;p:PMemArrNM):real; var i,j,Sum,Count:integer; begin Count:=0; Sum:=0; for i:=First to N do for j:=First to M do if (i=j) and (p^[i,j]^>0) then begin Inc(Count); Sum:=Sum+p^[i,j]^; end; SrArMainDiag:=Sum/Count; end; procedure WriteAndFree(const First,N,M:integer;p:PMemArrNM); var i,j:integer; begin for i:=First to N do begin for j:=First to M do begin write(p^[i,j]^,' '); Dispose(p^[i,j]); end; writeln; end; end; begin ClrScr; FillArrayNxM(1,4,4,a); Sr:=SrArMainDiag(1,4,4,a); writeln('Matrica A 4x4: '); WriteAndFree(1,4,4,a); writeln('Srednearifm. polozhitelnyh elementov glavnoi diagonali: ',Sr:6:2); FillArrayNxM(1,5,5,b); Sr:=SrArMainDiag(1,5,5,b); writeln; writeln('Matrica B 5x5: '); WriteAndFree(1,5,5,b); writeln('Srednearifm. polozhitelnyh elementov glavnoi diagonali: ',Sr:6:2); write('Press any key to EXIT...'); readkey; end.
автор: delpas
Поделиться: