Szukanie 3 największych elementów tablicy

0
uses crt;
  type
  tab=array[1..100] of integer;
var
i:byte;
a:tab;
licz,max,max1,max2,elem:integer;


begin
clrscr;
{..............................}
         for i:=1 to 4 do
        begin
        writeln('Podaj ',i,' element ');
        readln(a[i]);
             end;
             {..........................}


                    max:=a[1];
                    licz:=1;
          {..............}
        for i:=2 to 4 do

          begin

         if max<a[i] then
                    begin
          licz:=licz+1;
         max:=a[i];
         end;
         end;

writeln('a[',licz,']',max);



readln;
end.

Witam!
Mam taki problemik z napisaniem programu. Otóż mam za zadanie napisać program, który znajdzie mi 3 maksymalne elementy tablicy i wyświetli indeks tegoż to argumentu. Tablica nie może być sortowana. Problem mam z szukaniem kolejnych maksimów o ile znalezienie pierwszego jest łatwe to kolejnego już nie.

Próbowałem to zrobić w ten sposób dla 2nd maximum. Próbowałem z kolejnym forem w ten sposób:

max:=a[1];
licz:=1;
for i:=2 to 4
do
begin
if max1<a[i] and max1<>max then do
begin
licz:=licz+1;
max1:=a[i];
end;
end;

Pytanie co zrobić jeżeli max1 nie jest różne od max ?? To chyba zdaje się być kluczem do rozwiązania:D

dodanie znaczników <code class="pascal"> - fp

0

Przede wszystkim sformatuj kod, żeby dało się go łatwo analizować; Prób sobie jakieś sensowne typy, kod podziel na procedury odpowiedzialne za jedną funkcję każda, a nie wszystko naraz;

Zadeklaruj tablicę z trzema elementami, na początku programy je wyzeruj; Zadeklaruj zmienną, która przechowywać będzie wartość elementu z tablicy o najmniejszej wartości; W pętli sprawdzaj czy bieżąca liczba jest większa od wartości tej zmiennej i jeśli tak - wstaw tę liczbę w odpowiednie miejsce w tablicy i ustaw nową wartość dla zmiennej z minimum z tablicy; Tak jedź przez wszystkie liczby do sprawdzenia; Na koniec masz w tablicy posortowane trzy maksima ze zbioru liczb.

0
```delphi const a:Integer=MININT; const b:Integer=MININT; const c:Integer=MININT; var I,V:Integer; begin for I:=Low(Tab) to High(Tab) do begin ``` ```delphi V:=Tab[I]; if V ```delphi end; end; ``` </del>
0

Dzięki Panowie za pomoc. Początkujący jestem totalnie i ogółem ciężko mi wymyślić samemu rozwiązanie albo schodzi mi pół dnia nad tym czasami i lepiej. Ten program po prostu mnie przerósł i już.Gdyby to ode mnie zależało to wgl nie pchałbym się w programowanie, bo to nie jest na moją łepetynę.
A co do procedur to jeszcze ich nie opanowałem na tyle dobrze,żeby ich używać;P

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