Bug l'exeption division entiere par zero

dbzquent Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
dbzquent Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je créer un jeux en mode console mais mon rand() bug :
a la compilation sa marche mais c'est quand je lance le fichier et que j'arrive a la ligne rand() le programme me dit "l'exeption division entiere par zero ..." enfaite le rand s'éxécute et bug le nombre Pseudo-Aléatoire est bien générer mais ensuite pouf bug !!!

Mon code (pas en entier !!!) :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int main()
{
int degat = 5;
int degam = 0;
int vie = 10;
int xp = 0;
int vim = 10;
int choix = 0;
int vir = 0;
int degaf = 0;
int degamm = 0;

srand(time(NULL));

scanf("%d", &choix);

switch (choix)
{
case 1:
printf("Vous vous battez contre un scarabe\n");
vim = 10;
do
{
degaf=(rand()%degat)+1;
vim = vim - degaf;
printf("Vous attaquez le scarabe et vous lui infliger du %d , il lui reste %d point de vie\n", degaf, vim);
degamm=(rand()%degam)+1;
vie = vie - degamm;
printf("Le scarabe vous attaque et il vous inflige du %d , il vous reste %d point de vie\n", degamm, vie);
} while(vim == 0 || vie == 0);
if (vim <= 0)
{
xp = xp + 100;
printf("Vous avez gagnez le combat et remportez 100 point d'xp , il vous reste %d point de vie\n\n", vie);
}
else {
vie = 1;
xp = xp -50;
printf("Vous avez perdue le combat , vous n'avez plus que 1 point de vie et vous perdez 50 point d'xp\n\n");
}
break;
return 0;
}






Je n'ais pas mis tous mon code "trop long( switch de 10 case et du code apart au switch !!!)" mais sinon pouvez vous m'expliquer d'ou viens l'erreur et si sa vient bien du rand ???

En faite pouvez vous aussi , si vous pouvez m'expliqu'er comment fait le rand parcequ'e j'ai rien compris !!!
screen :
http://imageshack.com/f/jcbughip
http://imageshack.com/f/56bug2tp

surl la photos c'est marquer srand mais s'ait rand faute d'orthographe dsl mais le srand marche lui !!!

2 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
si degat ou degam valent 0, il y a division par 0

degaf=(rand()%degat)+1;
..
degamm=(rand()%degam)+1;
0
dbzquent Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Salut, merci de ta reponse enfaite j'ai enlever le deuxieme rand() et il m'as pas mis d'erreur je vais voir se que je peut faire.

Encorre merci je te dirait si sa marche ou pas .



Edit 1: merci jais mis comme quoi degam = 1 et sa marche mais maintenant ma boucle bug !!!


code :


case 1:
printf("Vous vous battez contre un scarabe\n");
vim = 10;
do
{
degaf=(rand()%degat)+1;
vim = vim - degaf;
printf("Vous attaquez le scarabe et vous lui infliger du %d , il lui reste %d point de vie\n", degaf, vim);
degamm=(rand()%degam)+1;
vie = vie - degamm;
printf("Le scarabe vous attaque et il vous inflige du %d , il vous reste %d point de vie\n", degamm, vie);
} while(vim == 0 || vie == 0);
if (vim <= 0)
{
xp = xp + 100;
printf("Vous avez gagnez le combat et remportez 100 point d'xp , il vous reste %d point de vie\n\n", vie);
}
else {
vie = 1;
xp = xp -50;
printf("Vous avez perdue le combat , vous n'avez plus que 1 point de vie et vous perdez 50 point d'xp\n\n");
}
break;


La boucle ne se lance qu'une fois ou si elle continue elle ne s'arrete pas a 0 mais a -1 .
Et le pire c'est que le else se lance a chaque fois pouvez vous de nouveau m'aider svp, grand merci a dubcek pour ta premiere réponse !!

Fin Edit 1 .
0