C++, aide pour une boucle

Résolu/Fermé
Misumin Messages postés 4 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 8 juillet 2011 - 21 juin 2011 à 01:20
Misumin Messages postés 4 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 8 juillet 2011 - 7 juil. 2011 à 04:35
Bonjour,
J'ai décider de créer une boucle dans un de mes codes C++. Le logiciel que j'utilise est Dev C++, si ça peut aider. Mais bon, en fait, mon problème c'est une boucle "while" et pour tout vous dire, je ne trouve pas où peux bien être le problème. Alors je vais vous montrer le code:
#include<iostream>
using namespace std;

int main()
{
int a,i,z,x,p,b,s,aa,aaa,Saa,edb,sdd,f,d,dm,df,vrm,c,m,vdm,vi;
// Cette partie ci contient le code qui n'a pas besoin d'être retouché
cout<<"Numero du monstre:";
//Le numéro du monstre indique en faire les dommages qu'il va faire... Jusqu'ici pour moi tout est compréhensible, tout va bien.
cin>>m;
//On indique la Variable m; qui est donc le numéro du monstre (1 dans ce cas-ci)
dm=m-d;
//Dommage reçu
if(dm<=0)dm=0;
//On ne peux pas recevoir des dégât négatifs
df=f-(m+2);
//Les dégâts fait au monstre
vdm=m*2+21;
//C'est ici que ça ce complique dans ma tête. Vdm, qui veux dire vie du monstre entier est équivalent à 1, dans ce cas-ci, fois 2, donc 2, + 21, donc 23. Alors la vie du monstre entier est de 23.
vrm=vdm-df;
//Vrm veux dire vie restante au monstre. Donc Vie du monstre entier (vdm) moins les dommages faits (df)
while (vrm>0)
//Tant que la vie restante au monstre est supérieur à 0, la boucle continue
{
cout<<"dommage recu:"<<dm<<endl;
cout<<"Dommage fait:"<<df<<endl;
cout<<"Vie restante:"<<50-dm<<endl;
cout<<"Vie restante au monstre:"<<vrm<<endl;
//La vie restante est donc en fait, vdm-df, mis dans une seule variable
vrm-df;
//On change la variable vrm et on lui enlève les dommage faits (df). Donc dans la prochaine boucle, ça devrait faire à vie restante au monstre: vrm-df et ensuite : (vrm-df)-df, jusqu'à 0.
Cependant, lorsque je lance la boucle, cette dernière descend à l'infini sous 0. Pourquoi?
}
cout<<"vous avez gagne!"<<endl;
system ("Pause");
return 0;
}

Merci de votre aide et de votre compréhension.

1 réponse

KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
21 juin 2011 à 02:01
Quand tu fais while(vrm>0) tu ne modifies jamais vrm... donc ça tourne en rond !
Tu pourrais faire qqch du genre :

for (vrm=vdm-df; vrm>0; vrm-=df)
{
   cout<<"dommage recu:"<<dm<<endl;
   cout<<"Dommage fait:"<<df<<endl;
   cout<<"Vie restante:"<<50-dm<<endl;
   cout<<"Vie restante au monstre:"<<vrm<<endl;
}

Remarque : dans ton code tes variables ne sont pas initialisées ce qui pose problème :
dm=m-d;     // que vaut d ? 
df=f-(m+2); // que vaut f ?
// etc...
0
Misumin Messages postés 4 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 8 juillet 2011
7 juil. 2011 à 04:35
1.Oui, dans mon code anterieur je met la variable d et f avec des chiffres.. En fait, j'essayais de faire comme une tutoriel de jeu, sois donc d'equiper un premier objet etc. Donc la force (f) et la defense (d) doivent etre initialisées.

2.Merci, ca m'a beaucoup aider.. En fait c'est que je m'etais tromper.. C'etait effectivement for qu'il fallait mettre et non while.. C'est plus facile comme ca..
0