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ăspunsuri la întrebare
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.