Zdravím vás :) ... Mám dělat závěrečnou práci. Zadání zní:
Vytvořte program s následující nabídkou:
a) Průměr známek
Vyhodnoťte klasifikaci z jedné písemné práce ve třídě. Je dán počet žáků a dále výsledná známka každého z žáků. Ošetřete zadání tak,
aby bylo možné zadat pouze známky v rozsahu <1;5>. Pro ostatní případy uživatele upozorněte např.: "Chybné zadání".
Určete počty žáků klasifikovaných jednotlivými známkami a průměr celé třídy.
b) Načtěte do pole N čísel. Vytvořte statistiku, kolikrát se opakují stejná čísla.
c) Ukončení Programu
Program mám napsany, ale jde mi o to, te kdyz zadam, ze chci jednicku, udela se program jedna, a pak zvolim ze ho nechci opakovat, tak bych chtel aby se miu to vratilo zase na to MENU... Jen nevim jak tam davat ty repeaty, a kam ty podminky, poradite?
program zaver;
uses wincrt;
type data = array [1..50] of integer;
var b,c:real;
pole,npole:array[0..500] of integer;
i,v,n,p1,p2,p3,p4,p5,h:integer;
a : data;
begin
Writeln('*********************************');
Writeln('********** M E N U **********');
Writeln('*********************************');
writeln;
writeln('1. Písemná práce');
Writeln('2. Pole');
writeln('3. Ukončit program');
Writeln;
repeat
Write('Zadejte číslo ');
readln(v);
IF ((v<>1) and (v<>2) and (v<>3)) then
writeln('Muzes zadat pouze cisla 1,2 nebo 3');
until ((v=1) or (v=2) or (v=3));
case v of 1:
begin
p1:=0; p2:=0; p3:=0; p4:=0; p5:=0;
repeat
Writeln('Tento program vyhodnotí písemnou práci ve třídě.');
writeln('Je dán počet žáku ve třídě a známka každého studenta.');
Writeln('Program poté vypíše počet žáku klasifikovaných jednotlivými známkami.');
writeln('Rovněž zjistí celkový průměr z celé třídy.');
writeln;
repeat
write('Zadejte počet žáku ve třídě ');
readln(n);
IF n<=0 then writeln('Zadal jsi špatné číslo, počet nemůže být nulový nebo zaporný.'); writeln;
until n>0;
For I:=1 to n do begin
repeat
write('Zadejte výslednou známku ',I,'. žáka '); readln(A[i]);
IF ((a[i]<>1) and (a[i] <>2) and (a[i] <>3) and (a[i] <>4) and (a[i] <>5))
then begin writeln('Chybné zadání, známku lze zadat v intervalu <1;5>.'); writeln; end;
until ((a[i]=1) or (a[i] =2) or (a[i] =3) or (a[i] =4) or (a[i] =5));
if a[i]=1 then p1:=p1+1;
if a[i]=2 then p2:=p2+1;
if a[i]=3 then p3:=p3+1;
if a[i]=4 then p4:=p4+1;
if a[i]=5 then p5:=p5+1;
end;
writeln;
writeln('************************************');
writeln('* *');
writeln('* Známku 1 dostalo celkem ',p1,' žáku *');
writeln('* Známku 2 dostalo celkem ',p2,' žáku *');
writeln('* Známku 3 dostalo celkem ',p3,' žáku *');
writeln('* Známku 4 dostalo celkem ',p4,' žáku *');
writeln('* Známku 5 dostalo celkem ',p5,' žáku *');
writeln('* *');
writeln('************************************');
writeln;
writeln('Celkový průměr známek ve třídě je ',((p1*1+p2*2+p3*3+p4*4+p5*5)/n):3:2);
writeln;
writeln('Pokud chcete ukoncit program Písemná Práce zmáčkněte 1');
writeln('Pokud zadáte libovolnou klávesu kromě 1, program Písemná Práce se restartuje');
write('Zadejte číslo ');
readln(b);
until b=1;
end;
2:
begin
repeat
Writeln('Načtěte do pole N čísel, program poté vypíše, kolikrát se dané číslo opakuje');
Writeln;
repeat
write('Zadejte počet prvků pole: '); {Zjisteni poctu prvku}
readln(N);
IF n <=0 then writeln('Zadat lze pouze čísla kladná nenulová čísla');
until n>0;
writeln;
for i:=0 to N-1 do begin {Nacitani hodnot do pole}
write('Zadejte ',i+1,'. číslo: ');
readln(pole[i]);
end;
for i:=0 to N-1 do inc(npole[pole[i]]); {Navysovani hodnot v novem poli}
writeln;
for i:=0 to 100 do begin {Vypis hodnot na nenulovych pozicich noveho pole}
if npole[i]>0 then writeln(i,' - ',npole[i],'x');
end;
writeln('Pokud chcete program Pole ukončit, zmáčkněte jedničku.');
writeln('Pokud zadáte jiné číslo než jedna, program se restartuje.');
write('Zadej číslo ');
readln(h);
until (h=1);
end;
3: writeln('konec programu');
end;
end.