uses crt;
const nmax = 100; {Nr maxim de elemente}
type tablou = array[1..nmax] of integer;
var a: tablou;
    i, n: word;
    
function suma: longint;
var s: longint;
begin
    s := 0;
    for i := 1 to n do inc(s, a[i]); {la s se aduna a[i]}
    suma := s;
end;

function max: integer;
var m: integer;
begin
  max := 1;
  m := a[1];
  for i := 2 to n do if a[i] > m then begin
    m := a[i];
    max := i;  {max reprezinta nr de pozitie al elementului maxim}
  end; 
end;    

function nr_pare: integer;
var p: integer;
begin
   p := 0;
   for i := 1 to n do 
     if a[i] mod 2 = 0 then inc(p); {Daca restul impartirii la 2 este 0, atunci nr este par}
   nr_pare := p;  
end;

function media: real;
begin
  media := suma / n;
end;

begin
  clrscr;    {Curatirea ecranului}
  randomize; {Pentru obtinerea numerelor aleatoare}
  writeln('Scrie nr de elemente (intre 1 si ', nmax, '): ');
  readln(n);
  writeln('Doresti sa generez ', n, ' numere? (Apasa "D" sau "N")');
  if UpCase(ReadKey) = 'D' then  {UpCase transforma caracterul citit de ReadKey in majuscula}
    for i := 1 to n do 
      a[i] := random(MAXINT)     {Un numar aleator intre 0 si MAXINT}
  else
    for i := 1 to n do begin
      write('a[', i, '] = '); 
      readln(a[i]);
    end;

    clrscr;
    
    writeln('Tabloul a:');
    for i := 1 to n do write(a[i]:6);
    
    writeln;
    writeln;
    writeln('Suma: ');
    writeln(suma:10);
    writeln;
    writeln('Elentul maxim: ');
    writeln('   a[', max, '] = ', a[max]);
    writeln;
    writeln('Nr elemente pare: ');
    writeln(nr_pare:10);
    writeln;
    writeln('Media: ');
    writeln(media:13:2);
    
    readkey;  
end.
