Problème programme c++
Résolu/Fermé
A voir également:
- Problème programme c++
- Programme demarrage windows 10 - Guide
- Programme démarrage windows 10 - Guide
- Fichier ouvert dans un autre programme - Guide
- Desinstaller un programme - Guide
- Programme bonjour c'est quoi ✓ - Forum Logiciels
3 réponses
Jithel
Messages postés
843
Date d'inscription
mercredi 20 juin 2018
Statut
Membre
Dernière intervention
31 août 2021
171
12 févr. 2019 à 16:21
12 févr. 2019 à 16:21
Je pense que tu ne sors jamais de la boucle
Vérifie que joueur_vie vaut bien 0 à un moment.
while (joueur_vie > 0)
Vérifie que joueur_vie vaut bien 0 à un moment.
Utilisateur anonyme
Modifié le 12 févr. 2019 à 17:39
Modifié le 12 févr. 2019 à 17:39
Bonjour
Comme l'a dit Jithel, il semble que tu ne modifies jamais joueur_vie, donc tu ne sortiras jamais de ta boucle.
Mais ce n'est pas ce qui provoque "Le programme a cessé de fonctionner". Au contraire, ça l'empêcherait plutôt de cesser !
Le problème est que tu n'initialises pas ta variable monstre, donc une instruction comme
Tu crois que tu initialises monstre quand tu fais
Pour initialiser la variable dans les accolades, il suffit d'une affectation
Voir le 4e exemple du paragraphe IV-A qui correspond exactement à ton cas :
https://www.squalenet.net/fr/ti/tutorial_c/6-variables-type-declaration-portee.php5
Comme l'a dit Jithel, il semble que tu ne modifies jamais joueur_vie, donc tu ne sortiras jamais de ta boucle.
Mais ce n'est pas ce qui provoque "Le programme a cessé de fonctionner". Au contraire, ça l'empêcherait plutôt de cesser !
Le problème est que tu n'initialises pas ta variable monstre, donc une instruction comme
nom_monstre = nom[monstre];va chercher n'importe où dans la mémoire , et provoque un gros plantage.
Tu crois que tu initialises monstre quand tu fais
if (choix_du_monstre < 3) { int monstre(0); }Ce n'est pas vrai. Pas complètement faux, mais en fait tu déclares une nouvelle variable monstre que tu initialises à 0 et qui est détruite aussitôt, car la portée d'une variable est limitée au bloc dans lequel elle est déclarée , c'est à dire entre l'accolade { qui précède et l'accolade } correspondante. Cette variable n'existe qu'entre ces deux accolades, et cache la variable monstre définie à l'extérieur des accolades.
Pour initialiser la variable dans les accolades, il suffit d'une affectation
monstre = 0;, il ne faut pas redéfinir monstre.
Voir le 4e exemple du paragraphe IV-A qui correspond exactement à ton cas :
https://www.squalenet.net/fr/ti/tutorial_c/6-variables-type-declaration-portee.php5