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.