C++ probleme de boucle infini

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

  1. 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
    1. 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