C++, aide pour une boucle

Résolu
Misumin Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Misumin Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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