Mam do zrobienia program, który po wprowadzeniu n-elementów wskaże mi wartość min i max, oraz pozycje na której się znajdują. Wartość max i min już mi wskazuje ale jeszcze pozycje. Proszę o pomoc.
A gdzie kod programu, który zrobiłeś/aś??? Bez tego raczej nie będzie pomocy...
var i, n, : integer;
max,min,x: real;
dana: string;
begin
dana:=inputbox('Podaj n= ','n=','1');
n:=strtoint(dana);
max:=0;
min:=0 ;
for i:=1 to n do
begin
dana:=inputbox('Podaj x','x=','1');
x:=strtofloat(dana);
if x>max then
max:=x ;
else
max:=max;
if x<min then begin
min:=x ;
else
min:=min
end;
showmessage('Max= '+floattostr(max));
showmessage('min= '+floattostr(min));
end;
Ten kod z max:=max; oraz min:=min; jest według mnie zbędny. A jak chcesz sprawdzić pod jakim indeksem jest największa liczba i najmniejsza, to skorzystaj z dynamicznej tablicy integerów. Nadaj jej rozmiar SetLength(Tablica, N); a później w pętli od Low(Tablica) to HighTablica) wczytuj elemenry. Tutaj masz opisane tablice: http://4programmers.net/Delphi/Tablice i po skonczeniu wprowadzania liczb, zrób pętlę znowu od Low(Tablica) to High(Tablica) i porównuj elemnty talicy z min i max, jeżeli jakiś element równą sie min to w pomocniczej zmiennej zapamietaj jego indeks, to samo z wartością max. Na końcu wyświetl. Teraz mi się wydaje, że tak będzie ok.
var
pozycja_min,pozycja_max:Integer;
//...
pozycja_max:=0;
pozycja_min:=0;
for i:=1 to n do
//...
if x>max then
begin
max:=x;
pozycja_max:=i;
end;
if x<min then
begin
min:=x;
pozycja_min:=i;
end;
//...
Przecież żaden z przedstawionych tu kodów nie będzie działać poprawnie!.
Jeżeli podamy:
2
11
10
to wynik będzie: min - 0 w pozycji 0; max 11 w pozycji 0
a dla danych:
2
-10
-11
Odpowiednio max się wykrzaczy.