C++ probleme de boucle infini

val -  
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   -
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!!



2 réponses

cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   10
 
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
0
cap'tain sheeps Messages postés 447 Date d'inscription   Statut Membre Dernière intervention   10
 
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");
} 
0