Diskuze: Úkol s příkladem, hod kostkou
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 6 zpráv z 6.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Tak v první řadě musíš vyžadovat zadání, než skutečně zadá 1-6 (tj. když zadá např. 7..
scanf("%d", &hodkostkou);
while ((hodkostkou < 1) || (hodkostkou > 6))
{
printf("Neplatné číslo - házej znovu\n");
scanf("%d", &hodkostkou);
}
Takto budeš cyklit až do té doby, než zadá správnou číslici. Následně spočteš statistiky:
// pozor, oba musi byt na zacatku nastavene na 0!
pocethodu++;
soucethodu += hodkostkou;
Nakonec řešíš hod 6, kdy se má celý hod opakovat. Opakování = cyklus.. Takže to celé zabalíme do dalšího cyklu:
int hodkostkou;
int pocethodu = 0;
int soucethodu = 0;
scanf("%d", &hodkostkou);
do {
while ((hodkostkou < 1) || (hodkostkou > 6))
{
printf("Neplatné číslo - házej znovu\n");
scanf("%d", &hodkostkou);
}
pocethodu++;
soucethodu += hodkostkou;
} while (hodkostkou == 6);
printf("statistiky: ....");
Jinak bacha na věci typu "while(hodkostkou = 6)" - přiřazuješ namísto
porovnávání
int main(int argc, char** argv) {
printf("Jméno: Jan Kratka\n");
printf("Login: kratka10\n");
printf("Název úkolu: Úkol č. III a IV\n");
int hodkostkou;
int pocethodu = 0;
int soucethodu = 0;
printf("Hoď kostkou v rozmezí 1-6 pokud ti padn 6 házej znova\n");
scanf("%d", &hodkostkou);
do {
while ((hodkostkou < 1) || (hodkostkou > 6))
{
printf("Neplatné číslo - házej znovu\n");
scanf("%d", &hodkostkou);
}
pocethodu++;
soucethodu += hodkostkou;
} while (hodkostkou == 6);
printf("Hodil si %d krát\n", pocethodu);
printf("Součet tvých bodů je %d", soucethodu);
return (EXIT_SUCCESS);
}
¨
Děkuji za pomoc. Vlastně tohle si mi napsal, takže když zadám 1-5
program správně skončí , a vypíše statistiku, ale pokud zadám 6 kolikrát
chci a pak třeba 2 program nikdy neskončí a pořád jede dál. A pokud bych
chtěl ještě napsat to těla do nějaký printf tak se mi to zacyklilo jak je
to možné?
Oh. teď si všímám jedné chyby
Před "while ((hodkostkou < 1) || (hodkostkou > 6))" musí být samozřejmě ještě nepodmíněné zadávání.. protože takto se to nikdy nezeptá znova..
Takže stačí začátek do {} while hodit o dva řádky výš...
do {
printf("Hoď kostkou v rozmezí 1-6 pokud ti padn 6 házej znova\n");
scanf("%d", &hodkostkou);
while ((hodkostkou < 1) || (hodkostkou > 6))
{
...
Zkus si to v hlavě prokrokovat a zamyslet se, proč to tak je..
Super děkuji moc. Takže chápu, že prvně se vykoná do, kde pokud dám správně 1-6 (kvůli jiném číslum je tam tedy to while.) zapíše se do proměnné počet a součet. Pokud nedám 6 tak cyklus skončí. Ale jak ještě udělám když dám 6, aby vykonalo to stejný, ale s jiným textem?
A já myslím, že do while se může použít jen do while, a né do while, while, nebo je to tak , že je to do while, ale v cyklu do je while jako sólo.
Cykly můžeš libovolně vnořovat jak potřebuješ (a často se tomu nedá vyhnout).
Pokud chceš vypisovat jiný text, tak tam budeš muset přihodit nějaký if.
Zobrazeno 6 zpráv z 6.