NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Náhodne číslo v podmienke

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Oli Wonder
Člen
Avatar
Oli Wonder:30.9.2017 12:22

Ahojte vytváram program a v nom som použil jednoduchý generátor čísla rpzmedzie (1-3)

int cislo = rand();

Problém je ten že ked ho dám do if() tak nastane error.

 
Odpovědět
30.9.2017 12:22
Avatar
Luboš Běhounek Satik:30.9.2017 12:49

jak ho davas do if a jakej error? :)

Nahoru Odpovědět
30.9.2017 12:49
https://www.facebook.com/peasantsandcastles/
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
Oli Wonder:30.9.2017 15:12

Uživaťeľ si typne čislo medzi 1-3 a skušal som ho dať do takejto podmienky :

if(typ == nahodneCislo){
}

Nahodne cislo mi ostane podciarknute

 
Nahoru Odpovědět
30.9.2017 15:12
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Oli Wonder
Jan Vargovský:30.9.2017 15:20

a jakého typu je typ a nahodneCislo?

 
Nahoru Odpovědět
30.9.2017 15:20
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na Jan Vargovský
Oli Wonder:30.9.2017 15:24

int nahodneCislo = rand();

 
Nahoru Odpovědět
30.9.2017 15:24
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Oli Wonder
Jan Vargovský:30.9.2017 15:38

a ten typ?

EDIT: už mi asi došlo že to má být tip = co uživatel zadal (tipnul) :D

Editováno 30.9.2017 15:39
 
Nahoru Odpovědět
30.9.2017 15:38
Avatar
Odpovídá na Oli Wonder
Matúš Olejník:30.9.2017 15:45

Ukáž celý alebo aspoň väčšiu časť kódu, takto z jedného príkazu ťažko určiť čo robíš zle.

Nahoru Odpovědět
30.9.2017 15:45
/* I am not sure why this works but it fixes the problem */
Avatar
Oli Wonder
Člen
Avatar
 
Nahoru Odpovědět
30.9.2017 15:53
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na Matúš Olejník
Oli Wonder:30.9.2017 15:58
cout << "Ked budete pripravený na hru , tak možte začať stavovať svoje žetony." << endl;
        cout << "Minimálna stávka je 25 žetonov." << endl;
        cout << "Prosím zadajte počet žetonov ktoré chcete staviť: ";
        cin >> stavka;

        if (stavka > 25 && stavka <= vstupnyVklad)
        {
                cout << "Stavili ste " << stavka << " žetonov." << endl;
                goto hra;
        }
        else
        {
                cout << "Stavili ste málo žetonov." << endl;
                goto kasino;
        }

hra:
        cout << "Typnite si výherné číslo v rozmedzi 1-3" << endl;
        cin >> typnuteCislo;

        int cislo = rand();
 
Nahoru Odpovědět
30.9.2017 15:58
Avatar
Oli Wonder
Člen
Avatar
 
Nahoru Odpovědět
30.9.2017 18:50
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na Oli Wonder
Martin Dráb:30.9.2017 18:53

Pravděpodobně bys chtěl místo

int cislo = rand();

dát

if (typnuteCislo == rand())
. . .

Případně za ten řádek přidat

if (cislo == typnuteCislo)
. . .
Nahoru Odpovědět
30.9.2017 18:53
2 + 2 = 5 for extremely large values of 2
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na Martin Dráb
Oli Wonder:30.9.2017 18:54

Error už neni ale ako to spraviť aby sa mi vygenerovalo nahodne číslo od 1-3 a potom sa porovnalo s typom?

 
Nahoru Odpovědět
30.9.2017 18:54
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Oli Wonder
Jan Vargovský:30.9.2017 19:43
int cislo = rand() % 3 + 1;
  1. funkce rand() ti vrátí tuším číslo od 0 po 216 (cca 65k)
  2. Proto ho musíš oříznout tím modulem, rand() % 3 ti vrátí čísla 0 - 2
  3. Pak jen přičteš 1 abys posunul ten interval z 0 - 2 na 1 - 3
 
Nahoru Odpovědět
30.9.2017 19:43
Avatar
Oli Wonder
Člen
Avatar
Odpovídá na Jan Vargovský
Oli Wonder:1.10.2017 18:04

Ked som zadal napr. 1 tak vystup programu bol 1486

 
Nahoru Odpovědět
1.10.2017 18:04
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.