pascal elementy najwieksze

0

Mam do napisania program:
Stworzyć tablicę jednowymiarową 50-elementową, uzupełnić ją elementami losowymi i wyświetlić na ekranie. Znaleźć i wyświetlić 3 największe elementy w tablicy.

Mój program:
uses crt;
var
tab:array[1..50] of integer;
max:array[1..50] of integer;
i,j:integer;
begin
clrscr;
randomize;
for i:=1 to 50 do
begin
tab[i]:=random(100);
write(tab[i],' ');
end;
writeln;
for i:=1 to 100 do
for j:=1 to 3 do
begin
if max[j]<tab[i] then
max[j]:=tab[i];
end;
writeln('Maksymalne elementy tablicy:');
for j:=1 to 3 do
write(max[j],' ');
readln;
end.

Z grubsza mi poszło, ale mam gdzieś błąd i ustalają się złe te maksymalne elementy tablicy. Czy mogłby ktoś z was mi poprawić błąd? Z góry dziękuje za odpowiedzi.

0

po pierwsze jak wklejasz kod to wklejaj w znacznikach delphi.
po drugie formatowanie:

var
  tab : array[1..50] of integer;
  max : array[1..50] of integer;
  i,j : integer;
begin
  clrscr;
  randomize;
  for i:=1 to 50 do
    begin
      tab[i]:=random(100);
      write(tab[i],' ');
    end;
  writeln;
  for i:=1 to 100 do
    for j:=1 to 3 do
      begin
        if max[j]<tab[i]
          then max[j]:=tab[i];
      end;
  writeln('Maksymalne elementy tablicy:');
  for j:=1 to 3 do
    write(max[j],' ');
  readln;
end.

prawda ze czytelniej?

a teraz wyjasnij nam kilka rzeczy:
tablice masz do 50 a w drugiej petli masz for i:=1 to 100 do... skad te 100? wyjedziesz po za tablice.
po drugie czemu rozmiar tablicy max jest 50 skoro uzywasz tylko 3.
po trzecie wyjasnij jak dziala Twoje wyszukiwanie najwiekszych liczb... bo cos napisalas ale chyba sam nie wiesz co... ;]

0

możliwe, że się pomyliłam. moge mieć parę błędów, bo tu przerabiałam inny poprzedni program i najwyraźniej coś przeoczyłam. a za inne niedociągnięcia sory, ale pierwszy raz pisze na takim forum.

0

hmm, a dlaczego uważasz, że ustalają się złe te maksymalne elementy tablicy?

0

ja bym to rozwiazal tak:

for m:=1 to 3 do
    for i:=1 to rozmiar do
       if (tab[i]>max[m]) and ((m=1) or (tab[i]< max[m-1]))
         then max[m]:=tab[i];
0

wyświetlają się złe, ponieważ w tablicy są liczby 1-100 a max wyświetlają sie jakieś 5cio cyfrowe.

0

już nieaktualne. poprawiłam te drobne błędy powstałe z niedopatrzenia i program dobrze się już wykonuje. dziękuje za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1