Que des boucles.

Signaler
Messages postés
11
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
12 mars 2003
-
Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
13 avril 2020
-
Salut à tous.

Je post mon prg cherchenbr modifié (voir sujet précédent ''int main" ).
Programme compilé avec visual C++ 06. ( zéro erreur )

j'ai essayé (j' y suis peut-être arrivé), avec vos conseils de le faire sans récursivité et sans appel à la fonction int main(), mais avec des boucles.

1) peut on le faire moins compliqué en ayant le même résultat?

2) je sors du pgr avec des "return(0)", est ce la bonne manière?

3) si vous trouvez des trucs bizarres, ben! ça ne me vexera pas. Dites moi tout.
:)

Voilà mon super Pgr.

Merci pour les coups de mains d'hier, d'aujourd' hui et de demain.

Pratix

#include
#include<ctime>
#include<cstdlib>

using std::cout;
using std::cin;
using std::endl;

int NbrAleatoire();
int Compare(int Chiffre1,int Alea1);
int Affiche(int Res);

int Chiffre;
int Essais;
int Alea;

int main()
{

while(true)
{
cout<<"entrez un chiffre entre 1 et 500"<<endl;
Chiffre=0;
Essais=0;

Alea=NbrAleatoire();

while(true)
{
Essais++;
cout<<"Essais "<<Essais<<endl<<endl;
cin>>Chiffre;

int Resultat=Compare(Chiffre,Alea);
int Finish=Affiche(Resultat);

if(Finish==5)
{
char z;
cin>>z;
if(z=='o')
{
break;
}
else
{
return(0); //POUR SORTIR DU PGR.
}
}

}
}
return(0);
}

int NbrAleatoire()
{
srand(time(0));
return(1+rand()%500);
}

int Compare(int Chiffre1,int Alea1)
{
while(Essais!=8||Chiffre==Alea1)
{
if(Chiffre1Alea1)
{
return(2);
}
else
{
return(3);
}
}
return(4);
}

int Affiche(int Res)
{
switch (Res)
{
case 1:
cout<<"trop petit "<<endl;
return(0);
case 2:
cout<<"trop grand "<<endl;
return(0);
case 3:
cout<<"gagne: voulez vous rejouer? (o,n):"<<endl;
return(5);
case 4:
cout<<"perdu! le nombre etait "<<Alea<<endl;
cout<<"voulez vous rejouer? (o,n)"<<endl;
return(5);
}
return(0);
}

3 réponses

Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
13 avril 2020

bonjour,
tu utilises les boucles while comme boucle infini alors que l'on peut utiliser de maniere bien plus utile.

cas de la boucle while:
while(test)
{
instruction1;
.
.
.
instruction n;
}

la boucle while exécute les instruction entre {} tant que le test est vrai

cas de la boucle do while:
do
{
instruction1;
.
.
.
instruction n;
}

while(test)
la boucle do while exécute les instruction entre {} tant que le test est vrai.

la boucle while fait un test en début de boucle alor que la boucle do while fait un test en fin de boucle.
Messages postés
11
Date d'inscription
lundi 10 février 2003
Statut
Membre
Dernière intervention
12 mars 2003

Merci d'avoir pris le temps de me répondre, mais sur les trois boucles incluses dans mon pgr, j'en ai utilisé une avec condition.

je connais les bases de l'utilisation des boucles "while", mais j'aimerai que l'on me donne la solution pour rendre une ou deux boucles "intelligentes" et de ce fait supprimer des conditions à l'intérieur de ces boucles.

A+

Pratix
Messages postés
358
Date d'inscription
jeudi 24 octobre 2002
Statut
Membre
Dernière intervention
13 avril 2020

il y a une question importante a se poser. c'est se demander quel type de boucle while je dois utiliser. pour répondre à la question, il faut savoir si les instructions comprises dans la boucle sont à éxécuter au moins une fois. si tu réponds par oui, alors c'est une boucle do while sinon une boucle while.

dans ton cas il faut utiliser des boucles do while comme tu oeux le voir dans le prog ci_dessous.

#include
#include<ctime>
#include<cstdlib>

using std::cout;
using std::cin;
using std::endl;

int NbrAleatoire();
int Compare(int Chiffre1,int Alea1);
int Affiche(int Res);

int Chiffre;
int Essais;
int Alea;

int main()
{

do
{

Chiffre=0;
Essais=0;
Alea=NbrAleatoire();

cout<<"entrez un chiffre entre 1 et 500"<<endl;

do
{
Essais++;
cout<<"Essais "<<Essais<<endl<<endl;
cin>>Chiffre;
if(Chiffre1Alea1)
{
cout<<"trop grand "<<endl;
}
if(Chiffre==alea1)
{
cout<<"gagne"<<endl;
}
}
while(Essais!=8||Chiffre==Alea1)
if(Essais==8)
{
cout<<"perdu! le nombre etait "<>z;
}
while(z=='o')
return(0);
}

int NbrAleatoire()
{
srand(time(0));
return(1+rand()%500);
}