Načíta čísla a určí minimum, maximum, index, a číslo najbližšie priemeru

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategorija: Zadaňa zos Pascalu

Program: Minmax.pas
Subor exe: Minmax.exe
Vyvojak: Minmax.gif

Načíta čísla a určí minimum a maximum týchto čísel, ich počet a číslo 'i' jeho indexu, ktoré je najbližšie priemeru načítaných čísel.
{ MINMAX.PAS                Copyright (c) TrSek alias Zdeno Sekerak }
{ Zostavte program, ktory nacita cisla, ak posledne cislo na vstupe }
{ je "K" /nacitajte/. Urcte minimum a maximum tychto cisel, ich     }
{ pocet a cislo "i" jeho index, ktore je najblizsie priemeru        }
{ nacitanych cisel                                                  }
{                                                                   }
{ Datum:04.02.2004                             http://www.trsek.com }
 
program min_max_index;
uses crt;
var c:array[1..100] of real;
    k:real;
    vstup:real;
    min:real;
    max:real;
    index:real;
    delta:real;
    ind:integer;
    n:integer;
    i:integer;
 
begin
     ClrScr;
     WriteLn('Program zisti minimalne, maximalne a index z cisel');
     Write('Zadaj ukoncovacie cislo k:');
     ReadLn(k);
 
     { pociatocne hodnoty }
     n := 0;
     index := 0;
 
     { nacita az pokial nezada vstup=k }
     repeat
        Write('Zadaj c[',n+1,']=');
        ReadLn(vstup);
 
        { spocitavam sum }
        if( vstup <> k )then
        begin
           n := n + 1;
           c[n] := vstup;
           index := index + vstup;
        end;
 
     until (vstup = k);
 
 
     { pociatocne min, max }
     min := c[1];
     max := c[1];
     ind := 1;
 
     { vypocitaj index }
     if( n <> 0 )then
        index := index / n;
 
     delta := index;
 
     { vypocitaj min, max }
     for i:=1 to n do
     begin
        if( c[i] < min )then
            min := c[i];
 
        if( c[i] > max )then
            max := c[i];
 
        { je najblizsie }
        if(abs( c[i] - index ) < delta )then
        begin
           delta := abs( c[i] - index );
           ind := i;
        end;
     end;
 
     WriteLn;
     WriteLn('Pocet nacitanych cisel je:', n);
     WriteLn('Minimalne cislo je:', min:8:3);
     WriteLn('Maximalne cislo je:', max:8:3);
     WriteLn('Priemer je cislo:  ', index:8:3);
     WriteLn('Index je:', c[ind]:8:3, ' bolo v poradi:', ind);
     ReadLn;
end.