2015-10-10 2 views
-1

Je fais une tâche d'école et je ne sais pas comment procéder sans savoir comment faire ce que j'ai demandé dans le titre. J'ai reçu un code (par mon prof) pour courir et imprimer un jet de dés (1-6). Je sais comment l'appeler dans la fonction principale (showDice (0);) et l'imprime. Mais j'ai besoin de savoir comment l'obtenir comme un int (ou une autre variable) afin que je puisse l'ajouter à une variable totale (ou compteur).Comment attribuer une valeur d'une fonction à un entier dans c?

Merci

+4

Depuis ses devoirs, je ne le ferai pas pour vous, mais votre fonction doit retourner quelque chose. Cela devrait vous pointer dans la bonne direction – dman2306

+0

L'autre alternative est de passer un pointeur à 'num' afin que sa valeur à l'adresse d'origine soit mise à jour. (c'est-à-dire 'void showDice (int * num);') Puis à la fin de la fonction '* num = diceRoll; Vous aurez alors la valeur de 'diceRoll' dans' num' dans 'main()'. –

+1

[srand() - pourquoi l'appeler une seule fois] (http://stackoverflow.com/q/7343833/995714) –

Répondre

1

Vous pouvez simplement le retourner. Quelque chose comme,

int showDice (int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() % 6) + 1; 
    printf("%d\n", diceRoll); 
    return diceRoll; 
} 

De plus, si vous aviez l'intention de num être le nombre de côtés,

int showDice (int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() % num) + 1; 
    printf("%d\n", diceRoll); 
    return diceRoll; 
} 

Enfin, vous ne devriez appeler srand une fois (au démarrage du programme).

+0

Si je devais tout simplement le renvoyer, comment l'appelerais-je dans la fonction principale? Juste comme n'importe quel autre entier? Donc je ferais quelque chose comme showdice (0); printf ("% d", diceRoll); –

+0

Quelque chose comme 'int roll = showDice (6); printf ("% d \ n", roll); ' –

+0

cela me donnerait-il un nombre aléatoire? ou juste 6? –

0

Vous pouvez simplement le retourner (au lieu de l'imprimer):

int rollDice(int num) { 
    int diceRoll; 
    srand(time(NULL)); 
    diceRoll = (rand() %6) +1; 
    return diceRoll; 
} 

Suppression certaines des choses étrangères, et si num est le nombre de côtés:

int rollDice(int num) { 
    srand(time(NULL)); 
    return (rand() % num) + 1; 
} 
+2

L'appel 'srand' devrait être (re) déplacé. – 5gon12eder

0

Qu'est-ce que vous pouvez faire est de changer le type de la fonction à un int afin que vous puissiez retourner une valeur, et retourner simplement diceRoll à la fin de la fonction:

int showDice(int num) { 
int diceRoll; 
diceRoll = (rand() %6) +1; 
printf("%d\n", diceRoll); 
return (diceRoll); 
} 

Ensuite, vous pouvez appeler votre fonction comme ceci (notez que srand doit être appelée une seule fois):

int main() { 
int rollDice; 
srand(time(NULL)); 
rollDice = showDice(0); 
} 
+1

L'appel 'srand' devrait être (re) déplacé. – 5gon12eder

+0

vrai, j'ai raté ça. – Guillaume