Заданны массивы А(4,4)и B(5,5). Для каждого массива вычислить среднее арифметическое положительных элементов расположенных на главной диагонали

Ввод оформить в виде процедуры, поиск среднего арифметического в виде функции.

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

Поделиться:

Похожие статьи: