C++ probleme de boucle infini
val
-
cap'tain sheeps Messages postés 491 Statut Membre -
cap'tain sheeps Messages postés 491 Statut Membre -
Bonjour a tous,
Je dois programmer un vérificateur d'adresse mail j'ai un problème de boucle infini dans le int main () de mon programme:
int main ()
{
while (sortie !=0)
{
cout<<"veuillez indiquer votre adresse email"<<endl;
cin>>adresse;
cout<<adresse<<endl;
strlwr (adresse);
while (bool_erreur==0)
{
controle_caractere_1 (adresse);
if (bool_erreur==1)
break;
controle_point (adresse, strlen(adresse));
if (bool_erreur==1)
break;
prog_arobase ();
if (bool_erreur==1)
break;
extracteur (0,arobase,adresse,part1);
if (bool_erreur==1)
break;
controle_caractere (part1,strlen(part1));
if (bool_erreur==1)
break;
extracteur (arobase+1,strlen(adresse),adresse,part2);
if (bool_erreur==1)
break;
controle_caractere (part2, strlen(part2));
if (bool_erreur==1)
break;
prog_point(part2);
if (bool_erreur==1)
break;
place_point (part2);
if (bool_erreur==1)
break;
extracteur (plce_point+1,strlen(part2),part2,part3);
controleur_part3 (part3);
if (bool_erreur==1)
break;
cout<<"votre adresse est valide"<<endl;
break;
}
bool_erreur = 0;
cout<<"pour sortir du programme taper sur 0"<<endl;
cin>>sortie;
cout<<endl;
}
system ("pause");
}
Je n'arrive pas a voir a quelle moment j'ai un probleme dans mes boucles, merci pour votre aide!!
Je dois programmer un vérificateur d'adresse mail j'ai un problème de boucle infini dans le int main () de mon programme:
int main ()
{
while (sortie !=0)
{
cout<<"veuillez indiquer votre adresse email"<<endl;
cin>>adresse;
cout<<adresse<<endl;
strlwr (adresse);
while (bool_erreur==0)
{
controle_caractere_1 (adresse);
if (bool_erreur==1)
break;
controle_point (adresse, strlen(adresse));
if (bool_erreur==1)
break;
prog_arobase ();
if (bool_erreur==1)
break;
extracteur (0,arobase,adresse,part1);
if (bool_erreur==1)
break;
controle_caractere (part1,strlen(part1));
if (bool_erreur==1)
break;
extracteur (arobase+1,strlen(adresse),adresse,part2);
if (bool_erreur==1)
break;
controle_caractere (part2, strlen(part2));
if (bool_erreur==1)
break;
prog_point(part2);
if (bool_erreur==1)
break;
place_point (part2);
if (bool_erreur==1)
break;
extracteur (plce_point+1,strlen(part2),part2,part3);
controleur_part3 (part3);
if (bool_erreur==1)
break;
cout<<"votre adresse est valide"<<endl;
break;
}
bool_erreur = 0;
cout<<"pour sortir du programme taper sur 0"<<endl;
cin>>sortie;
cout<<endl;
}
system ("pause");
}
Je n'arrive pas a voir a quelle moment j'ai un probleme dans mes boucles, merci pour votre aide!!
2 réponses
-
Salut,
En effet, il est bizarre ton code:
Déjà il n'y a pas de break pour les conditions if. Si tu veux renvoyer une erreur en cas de mauvais fonctionnement:
controle_caractere_1 (adresse);
if (bool_erreur==1)
throw logic_error // où autre type d'erreur ça dépend de ce que ta fonction retourne comme type d'erreur... Sinon tu peux aussi ne rien mettre.
else
//suite du programme si tout se passe bien:
controle_point (adresse, strlen(adresse));
etc.
Autre chose, si il n'y a pas d'erreur, cad si ta variable bool_erreur reste à 0, ca entrainera une boucle infinie.
En fait je comprend pas trop pourquoi tu fais 2 boucles. Ton seul marqueur de fin est quand l'utilisateur rentre 0 ou je me trompe?
Sheeps.
Randy Orton a une meilleure vie que toi !
D-D-D-D-DDDdddarck C-C-Combo ULTRA Kick Retourné flamboyant de maitre kin-chu-han -
En gros c'est ça que tu veux faire? :
int main () { while (sortie !=0) { cout<<"veuillez indiquer votre adresse email"<<endl; cin>>adresse; cout<<adresse<<endl; strlwr (adresse); controle_caractere_1 (adresse); if (bool_erreur==1){//récupération erreur } else controle_point (adresse, strlen(adresse)); if (bool_erreur==1){//récupération erreur } else prog_arobase (); if (bool_erreur==1){//récupération erreur } else extracteur (0,arobase,adresse,part1); if (bool_erreur==1){//récupération erreur } else controle_caractere (part1,strlen(part1)); if (bool_erreur==1){//récupération erreur } else extracteur (arobase+1,strlen(adresse),adresse,part2); if (bool_erreur==1){//récupération erreur } else controle_caractere (part2, strlen(part2)); if (bool_erreur==1){//récupération erreur } else prog_point(part2); if (bool_erreur==1){//récupération erreur } else place_point (part2); if (bool_erreur==1){//récupération erreur } else { extracteur (plce_point+1,strlen(part2),part2,part3); controleur_part3 (part3); } if (bool_erreur==1){//récupération erreur } else cout<<"votre adresse est valide"<<endl; bool_erreur = 0; cout<<"pour sortir du programme taper sur 0 sinon tape ce que tu veux mais pas 0"<<endl; cin>>sortie; cout<<endl; } system ("pause"); }