Wyszukiwanie największego elementu spośród n wczytanych licz


(alabama1) #1

Witam. Od razu powiem, że algorytm na znajdowanie największego elementu spośród określonego na początku zbioru liczb, umiem.Tylko teraz mam problem, gdy na początku podaję, ile będę podawał liczb.

program wczytnpodajmax;

uses crt;

var

        x,max:real;

        i,n:integer;

begin

        clrscr;

        writeln('Podaj, ile chcesz poda† liczb');

        readln(n);

        for i:=1 to n do

        begin

                writeln('Podaj jakĄ liczb©');

                readln(x);

                max:=0;

                if x>max then

                        x:=max;

        end;

writeln('Najwi©kszĄ liczbĄ jest ',x);

readln;

end.

Problem polega na tym, że program każdą liczbę, jaką podam, będzie traktował jako x i program nie zadziała, jak powinien. Wiem, że fragment, gdzie przypisuję x-owi max i potem, sprawdzam, czy x jest większy od max, to bzdura, ale nie mam pojęcia, co zrobić, żeby program traktował te liczby jako inne.

Oczywiście w kodzie zamiast max=0 jest max:=x


(Grzelix) #2

Całkowicie nie rozumiem co napisałeś pod kodem.

A kod powinien wyglądać tak:

max:=0; // początkowa inicjalizacja

for i:=1 to n do

        begin

                writeln('Podaj jakĄ liczb©');

                readln(x);

              // max:=0; tutaj nie ma sensu ponieważ przy każdym przebiegu czyścisz max'a

                if x>max then

                        max:=x; // w zmiennej max trzymasz największą wartość a nie odwrotnie

        end;

writeln('Najwi©kszĄ liczbĄ jest ', max); // i teraz wystarczy wypisać max'a

(alabama1) #3

Rzeczywiście, szkoda tylko, że zaczynam rozumieć, gdy widzę, jak kod powinien wyglądać. No cóż, będę wykonywał inne programy, to może nabiorę wprawy. Dzięki.