Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 09. 05. 2011 15:55

Jan Jícha
Veterán
Místo: Plzeň/Mnichov
Příspěvky: 1801
Škola: ZČU - FST - KMM
Pozice: Safety Engineer
Reputace:   74 
Web
 

Pascal

Zdravím vás tu, mám závěrečku z Pascalu. Zadání zní takto:


Vtvoř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



Tu písemku už mám, jen ji potřebuji zkontrolovat, ale s tím polem si nevím rady. Program mám takto:

Code:

program znamky;
uses wincrt;
type data = array [1..50] of integer;
var b,c:real;
i,v,n,p1,p2,p3,p4,p5:integer;
a : data;
begin
Writeln('********************');
Writeln('*****   MENU   *****');
writeln;
writeln('1. Písemná práce');
Writeln('2. Pole');
writeln('3. Ukončit program');
readln(v);
case v of 1:


begin
p1:=0; p2:=0; p3:=0; p4:=0; p5:=0;

Writeln('Tento program vyhodnotí písemnou práci ve třidě.');
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('*  Znamku 1 dostalo celkem ',p1,' žáku  *');
writeln('*  Znamku 2 dostalo celkem ',p2,' žáku  *');
writeln('*  Znamku 3 dostalo celkem ',p3,' žáku  *');
writeln('*  Znamku 4 dostalo celkem ',p4,' žáku  *');
writeln('*  Znamku 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);
end;

2: writeln('TadyBudePole');

3: begin writeln('Konec programu');
donewincrt; end;
end;
end.

Předem děkuji.

Offline

  • (téma jako vyřešené označil(a) Honza Matika)

#2 09. 05. 2011 18:36 — Editoval gladiator01 (09. 05. 2011 18:40)

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pascal

↑ Honza Matika:
Načti do pole čísla, serad ho a při procházení počítej počet výskytů (inkrementuj nějakou proměnnou dokud se číslo nezmění a pak počet vypiš nebo ulož)

K tomu prvnímu:
místo toho p1-p5 by jsi mohl také použít pole.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

#3 10. 05. 2011 20:45 — Editoval Honza Matika (10. 05. 2011 20:48)

Jan Jícha
Veterán
Místo: Plzeň/Mnichov
Příspěvky: 1801
Škola: ZČU - FST - KMM
Pozice: Safety Engineer
Reputace:   74 
Web
 

Re: Pascal

Tak to pole do toho pak vložím, zatím mám toto:

Code:

program zaver;
uses wincrt;
type data = array [1..50] of integer;
var b,c:real;
i,v,n,p1,p2,p3,p4,p5: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: writeln('blabla');
3: writeln('konec programu');


end;
end.

Chtěl bych, když v menu dám jedničku, dokončí se mi program Pisemk a zepta se mi, jestli ho chci restartovat nebo ukoncit, tak kdyz dam ukoncit, tak aby mi najelo zase to MENU... ale nejak jsem se do tech repeatu zamotal, tak nevim kam to mam dat. spis si nevim rady kam s tou podminkou.

Offline

 

#4 11. 05. 2011 12:03

Jan Jícha
Veterán
Místo: Plzeň/Mnichov
Příspěvky: 1801
Škola: ZČU - FST - KMM
Pozice: Safety Engineer
Reputace:   74 
Web
 

Re: Pascal

Tak už to mám s tím polem. Ale potřebuji, když dám v programu např. jedničku, udělá se mi program jedna, a pak zadam ze ho nechci opakovat, tak bych chtel aby se mi to zase vratilo zpet na zacatek menu a jelo to od znova, ale nevim kam s tim repeatem ... Diky moc .


Code:

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.

Offline

 

#5 12. 05. 2011 14:05

Jan Jícha
Veterán
Místo: Plzeň/Mnichov
Příspěvky: 1801
Škola: ZČU - FST - KMM
Pozice: Safety Engineer
Reputace:   74 
Web
 

Re: Pascal

Už jsem na to přišel. Jinak díky :) Už je to celý snad všechno ošetřený a v pořádku, nebo ne?


Code:

program zaver;
uses crt;
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,l:integer;
a : data;

begin
repeat
clrscr;

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);
writeln;
IF ((v<>1) and (v<>2) and (v<>3)) then
writeln('Můžes zadat pouze čísla 1,2 nebo 3');
until ((v=1) or (v=2) or (v=3));
case v of 1:

begin
clrscr;
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
clrscr;
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,' se opakuje celkem - ',npole[i],'x');
end;
writeln;
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: begin
writeln('KONEC');
end;
end;
until v=3;
end.

Offline

 

#6 12. 05. 2011 14:33

gladiator01
Místo: Jindřichův Hradec
Příspěvky: 1587
Škola: ZČU FAV - SWI
Pozice: absolvent
Reputace:   53 
Web
 

Re: Pascal

↑ Honza Matika:
Jenom by to chtělo nějakou úpravu. Takhle se v tom nedá moc vyznat.


Naděje jako svíce jas, potěší srdce štvané, čím temnější je noční čas, tím zářivěji plane.
VIVERE - MILITARE EST (Seneca)
Vím, že nic nevím. - Sokrates

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson