uses crt;
{Program bude fungovat pouze pro cisla od -1000 po +1000.}
const MAX = 1000;
MIN = -MAX;
{definice promennych}
var n: integer; {pocet cisel}
i: integer; {citac cyklu}
x: real; {ctene cislo}
max1, {nejvetsi nactene cislo}
max2, {druhe nejvetsi nactene cislo}
min1, {nejmensi nactene cislo}
min2: real; {druhe nejmensi nactene cislo}
sum: real; {soucet VSECH nactenych cisel}
begin
{nacteni n - pocet cisel, z nichz chceme pocitat orezany prumer}
write('Zadej pocet cisel (minimalne 5): ');
readln(n);
if (n < 5) then
writeln('Cisel bylo mene nez 5...')
{uzivatel spravne zadal n - muzeme zacit}
else begin
{zatim bylo precteno 0 cisel}
i := 0;
{fiktivni hodnoty maxim a minim - vsechna nactena cisla budou mezi MIN
a MAX, tudiz po aspon ctyrech ctenich budou min1, min2, max1 a max2
nahrazeny skutecnymi hodnotami maxim a minim}
max1 := MIN - 1;
max2 := MIN - 1;
min1 := MAX + 1;
min2 := MAX + 1;
{Pocitame soucet vsech nactenych cisel - dokud jsme nic nenacetli,
je roven nule.}
sum := 0;
{Budeme cist prave n-krat.}
while (i < n) do begin
{Citac cteni i zvysime o 1 a precteme i-te cislo.}
i := i + 1;
write ('Zadej ', i, '. cislo: ');
readln(x);
{K souctu vsech nactenych cisel pricteme prave nactenou hodnotu.}
sum := sum + x;
{Uprava zapamatovanych maxim a minim.}
if (x > max1) then begin
max2 := max1;
max1 := x;
end else if (x > max2) then
max2 := x;
if (x < min1) then begin
min2 := min1;
min1 := x;
end else if (x < min2) then
min2 := x;
end;
{Vypis vysledku - prumer spocitany z celkove sumy,
ale bez ctyr krajnich hodnot.}
writeln('Orazany prumer je ', (sum - min1 - min2 - max1 - max2) / (n - 4));
end;
readkey;
end.