Dau coroană.
Program în PASCAL.
Fie A=a1,a2,...an o secvență de numere întregi. Find dat un element x, vom numi multiplicitatea a lui x în A numărul de apriții ale lui x în A.Un element se numește majoritar dacă multiplicitatea sa este mai mare decat n/2. Scrieți un program în pascal care să determine elementul majoritar dintr-un șir, daca un astfel de element există.

Răspuns :

Răspuns:

program majoritar;

const nmax=100;

type sir=array[1..nmax] of integer;

var A,B:sir;

   n,i,j,k, el, gasit, apmax:integer;

begin

 write('n='); read(n);

 writeln('introdu elementele sirului, cu spatiu intre ele');

 read(A[1]); B[1]:=1; k:=1;

 for i:=2 to n do

   begin

     read(el);

     gasit:=0;

     for j:=1 to k do

       begin

         if (A[j]=el) then  

           begin gasit:=1; inc(B[j]); break; end;

       end;

     if gasit=0 then begin inc(k); A[k]:=el; B[k]:=1; end;

   end;

   apmax:=B[1]; j:=1;

   for i:=2 to k do

     begin

       if B[i]>apmax then begin apmax:=B[i]; j:=i; end;

     end;

   if apmax > n div 2  

     then writeln(A[j],' este majoritar')

     else writeln('nu exista majoritar...');

end.

Explicație:

memorizez in vectorul A numai elementele disticte din sirul introdus, iar in vectorul B memorizez aparitiile elementelor din A.