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