Navigace: Hlavní stránka -> PASCAL -> 05 Jednorozměrná pole -> 05.04 Hledání maximální a minimální hodnoty v poli a jejich pozice

MENU

05.04 Hledání maximální a minimální hodnoty v poli a jejich pozice

Zadání:
Sestavte program, který v poli čísel (max. 100) nalezne maximum a minimum a jejich pozici.
Řešení:
Na začátku programu načteme počet čísel v poli. Poté pomocí prvního cyklu FOR zadáme všechna čísla do pole.
Pomocí dalších čtyř řádků prohlásíme první prvek za maximum i minimum (min:=pole[1]; max:=pole[1];) a uložíme
jeho pozici do pozice maxima a minima (pozmin:=1; pozmax:=1;). Dalším cyklem FOR (všimněte si, že začíná od
hodnoty 2, protože první prvek již nemusíme testovat) otestujeme všechny ostatní prvky pole, zda nejsou menší
či větší než minimum a maximum. Pokud ano, uložíme jejich hodnoty a pozice do příslušných proměnných. Na konci
programu hodnoty a jejich pozice vytiskneme.
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var pole:array[1..100] of real;
    n,i,pozmin,pozmax:integer;
    min,max:real;
begin

   write('Zadejte pocet cisel: ');
   readln(n);

   for i:=1 to n do
   begin
      write('Zadejte ',i,'.cislo: ');
      readln(pole[i]);
   end;

   min:=pole[1];
   max:=pole[1];
   pozmin:=1;
   pozmax:=1;

   for i:=2 to n do
   begin
      if min>pole[i] then
      begin
         min:=pole[i];
         pozmin:=i;
      end;
      if max<pole[i] then
      begin
         max:=pole[i];
         pozmax:=i;
      end;
   end;

   writeln('Minimalni hodnota: ',min:0:3,', pozice: ',pozmin);
   writeln('Maximalni hodnota: ',max:0:3,', pozice: ',pozmax);

   readln;

end.
program ke stažení

Pro studenty
Zamyslete se nad tím, jak se bude program chovat v situaci, kdy budou v poli dvě shodné minimální nebo maximální hodnoty.