Problème programme c++
Résolu/Fermé
A voir également:
- Problème programme c++
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Frequence programme national ✓ - Forum Messagerie
- Programme demarrage windows 10 - Guide
- Programme bonjour ✓ - Forum Windows
- Programme démarrage windows 10 - Guide
3 réponses
Jithel
Messages postés
842
Date d'inscription
mercredi 20 juin 2018
Statut
Membre
Dernière intervention
31 août 2021
172
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.
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