Diskuze: Reštart funkcie

C a C++ C a C++ Reštart funkcie

Aktivity (1)
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  -1 4.9.2016 1:27
2x piš, jednou debuguj
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  +1 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.