Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akci až 30 % zdarma při nákupu e-learningu - Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
C# .NET + discount 30
Avatar
Loter
Člen
Avatar
Loter:4.9.2016 1:03

Píšem program v ktorom mám funkciu kocky. Problém je v tom, že potrebujem aby sa počas behu programu kocka hodila napr. 200x avšak hod kocky je stále rovnaký. Ako reštartujem hod?

int kocka()
{
  int iSecret=0;
  srand (time(NULL));
  iSecret = rand() % 6 + 1;
  return iSecret;
}
Editováno 4.9.2016 1:04
Odpovědět
4.9.2016 1:03
Kto vie dobre programovať, nemusí sa pretvarovať :)
Avatar
Odpovídá na Loter
Josef Kuchař - Pepa489:4.9.2016 1:27

Nejsem si jistý, protože s v C/C++ nevyznám, ale nestačilo by odebrat

srand (time(NULL));

?

Nahoru Odpovědět
4.9.2016 1:27
2x piš, jednou debuguj
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Loter
Libor Šimo (libcosenior):4.9.2016 7:43

srand (time(NULL));
Musi byt iba raz a to v main().
http://www.itnetwork.cz/…ahodna-cisla

Editováno 4.9.2016 7:44
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět
4.9.2016 7:43
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Loter
Neaktivní uživatel:26.9.2016 21:30
/* Hod N-stenou kostkou */

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h> // printf()
#include <stdlib.h> // rand(), srand()
#include <time.h> // time()

#define Nhod 200 // pocet hodu

int hodKostkou(int nstran);

int main(int argc, char *argv[]){
        int i;

        srand((unsigned int)time(NULL));
        printf("Hod N-stenou kostkou\n\n");
        for (i = 0; i < Nhod; i++) printf("%d. hod: %d\n", i + 1, hodKostkou(6));
        return 0;
}

int hodKostkou(int nstran){
        return ((rand() % nstran) + 1);
}

Funkce time() vrací typ time_t což je unsigned int. Z tohoto důvodu je třeba provést ve funkci srand()přetypování pro převzetí správného typu argumentu. Pokud funkce nemá parametry, zadává se typ void. Nahrazujeme tím starý způsob deklarace. Ve funkci kocka() je zbytečné deklarovat proměnnou. Výsledek náhodného čísla v rozsahu 1-N lze přiřadit přímo do příkazu vracejícího hodnotu funkce return. Viz. kód

Editováno 26.9.2016 21:32
Nahoru Odpovědět
26.9.2016 21:30
Neaktivní uživatelský účet
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 4 zpráv z 4.