Skocz do zawartości
Forum komputerowe PC Centre
_Mithrandir

[tp, tablice] Skąd ten błąd?

Rekomendowane odpowiedzi

Tak jak w temacie, proszę o pomoc w poprawie błędu. W większości przypadków program działa poprawnie, ale na poniższym obrazku jest błąd, który czasami się pojawia. Program ma wypisywać na ekranie trzeci największy element tablicy i trzeci najmniejszy element tablicy.

 

5d1e10caca3c686bm.jpg

 

Program:

 

program zad2_4;

uses crt;

 

const n=10;

k=3;

 

var l:array[1..n] of integer;

a,b,i,min,max,c:integer;

 

 

procedure wczyt;

begin

for i:=1 to n do

begin

l:= random(11);

writeln(i,'. ',l);

end;

end;

 

 

procedure sort;

begin

for i:=1 to n-1 do

begin

min:=l;

for b:=i+1 to n do

begin

if l<=min then begin

min:=l;

c:=b;

end;

end;

l[c]:=l;

l:=min;

end;

end;

 

 

procedure linia;

begin

writeln;

for i:=1 to 80 do

write('=');

writeln;

end;

 

 

begin

clrscr;

randomize;

writeln('Elementy tablicy: ');

writeln;

wczyt;

linia;

sort;

i:=0; {3. najm. element}

a:=0;

min:=l[1];

repeat

i:=i+1;

if l>min then begin

min:=l;

a:=a+1;

end;

until((a=k-1) or (i>n));

if i>n then writeln('Nie istnieje taki element tablicy. ')

else begin

a:=0;

for i:=1 to n do

if l=min then a:=a+1;

writeln('Trzeci najmniejszy element w tablicy to ',min,', wystapil ',a,' razy. ');

end;

linia;

i:=n; {3. najw. element}

a:=0;

max:=l[n];

repeat

i:=i-1;

if l<max then begin

max:=l;

a:=a+1;

end;

until((a=k-1) or (i<0));

if i<0 then writeln('Nie istnieje taki element tablicy. ')

else begin

a:=0;

for i:=1 to n do

if l=max then a:=a+1;

writeln('Trzeci najwiekszy element tablicy to ',max,', wystapil ',a,' razy. ');

end;

linia;

write('Aby zakonczyc, nacisnij dowolny klawisz. ');

readkey;

end.

Edytowane przez _Mithrandir

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

×
×
  • Dodaj nową pozycję...