Ciąg n-elementowy max min i ich pozycja w Delphi

0

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.

0

A gdzie kod programu, który zrobiłeś/aś??? Bez tego raczej nie będzie pomocy...

0
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;
1

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.

0
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;
//...
0

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.

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