begin process at 2008 07 06 00:03:49
1 205 404 membres
370 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : problème de IF [ Divers / Divers ] (ichigoZ710)

problème de IF le 21/10/2007 09:24:28

ichigoZ710
Bonjour,

je voulais avoir votre avis sur une partie de mon code qui fait des choses vraiment bizarre...disons que la condition d'un if ne se fait pas ....
voilà mon code avec son if :

PenroseI::PenroseI(){}

PenroseI::PenroseI(Point pta,Point ptb,Point ptc):TriIso(pta,ptb,ptc)
{
    double phi=0;
    phi=((1+ sqrt((double)5))/2);
    double test=0;

    if(getsommet()=='c'){
        test=((getlongbase())/(getlongcotiso()));
        cout<<phi<<endl;
        cout<<test<<endl;
        if((abs(phi-test))==0,000001){
            cout<<abs(phi-test)<<endl;
            cout<<"Le triangle est un triangle de Penrose de type I"<<endl;
        }
        else{
            cout<<"c'est pas un penrose -_-"<<endl;
        }
    }
    else if(getsommet()=='b'){
        test=((getlongbase())/(getlongcotiso()));
        cout<<test<<endl;
        if(abs(phi-test)==0,000001){
            cout<<abs(phi-test)<<endl;
            cout<<"Le triangle est un triangle de Penrose de type I"<<endl;
        }
        else{
            cout<<"c'est pas un penrose -_-"<<endl;
        }
    }
    else if(getsommet()=='a'){
        test=((getlongbase())/(getlongcotiso()));
        cout<<test<<endl;
        if(abs(phi-test)==0,000001){
            cout<<abs(phi-test)<<endl;
            cout<<"Le triangle est un triangle de Penrose de type I"<<endl;
        }
        else{
            cout<<"c'est pas un penrose -_-"<<endl;
        }
    }

}

il faut savoir que la valeur getsommet, getlongcotiso et getlongbase viennent d'une classe mère TriIso car la classe Penrose en hérite
je vais donc vous mettre ma classe TriIso également :

TriIso::TriIso(Point a,Point b,Point c)
{

    if ((a.Compoint(b)==0)&&(b.Compoint(c)==0)&&(c.Compoint(a)==0)) //si des point tous != alors..
    { //...c'est un triangle simple
        cout << "Ces points forment un triangle "<<endl;

        if ((a.Calclong(b))==(b.Calclong(c))){//si ab=bc -> sommet=b
            sommet = 'b';
            cout << "isoc\x8Ale en b" << endl;
            longbase=(c.Calclong(a));
            cout<<"La longueur de la base est : "<< longbase <<endl;
            longcotiso=(b.Calclong(c));
            cout<<"La longueur d'un cot\x82 isoc\x8Ale est : "<< longcotiso <<endl;

        }
        else if ((b.Calclong(c))==(c.Calclong(a))){//si bc=ca -> sommet=c
            sommet = 'c';
            cout << "isoc\x8Ale en c" << endl;
            longbase=(a.Calclong(b));
            cout<<"La longueur de la base est : "<< longbase <<endl;
            longcotiso=(a.Calclong(c));
            cout<<"La longueur d'un cot\x82 isoc\x8Ale est : "<< longcotiso <<endl;
        }
        else if ((c.Calclong(a))==(a.Calclong(b))){//si ca=ab -> sommet=a
            sommet = 'a';
            cout << "isoc\x8Ale en a" << endl;
            longbase=(c.Calclong(b));
            cout<<"La longueur de la base est : "<< longbase <<endl;
            longcotiso=(a.Calclong(c));
            cout<<"La longueur d'un cot\x82 isoc\x8Ale est : "<< longcotiso <<endl;
        }
        else{
            cout << "non isoc\x8Ale" << endl;
        }
    }
    else{
        cout<<"Ce n'est pas un triangle"<<endl;
    }
}

char TriIso::getsommet(){
    return(sommet);
}

void TriIso::setsommet(char sommet) {
   this->sommet = sommet;
}

double TriIso::getlongbase(){
    return(longbase);
}

void TriIso::setlongbase(double longbase) {
   this->longbase = longbase;
}

double TriIso::getlongcotiso(){
    return(longcotiso);
}

void TriIso::setlongcotiso(double longcotiso) {
   this->longcotiso = longcotiso;
}

et voilà ce que m'affiche ma console windows :

appel du constructeur simple : 0035A3D0 1 1
appel du constructeur simple : 0035A490 1 3
appel du constructeur simple : 0035A4D8 2 2
Ces points forment un triangle
isocèle en c
La longueur de la base est : 2
La longueur d'un coté isocèle est : 1.41421
1.61803                                                            <---------Valeur de phi
1.41421                                                            <---------Valeur de test
0.20382                                                            <---------Valeur de la sous traction de phi - test
Le triangle est un triangle de Penrose de type I   <---------Résultat du if dans Penrose
Appuyez sur une touche pour continuer...

Donc si quelqu'un pouvait m'aider à propos de ce if....

Merci,
Cordialement, ichigoZ710

Re : problème de IF le 21/10/2007 15:32:39

yann_lo_san

Passes donc plutôt tes variables en float à la place de double et utilises :
if( ( fabs(phi - test) ) == 0,000001f )
{

}


Re : problème de IF le 21/10/2007 18:05:59

buno
Salut,
Pas très conseillé de faire des tests de nullité avec des flottants....
Ce que j'ai l'habitude de faire:
if (abs(fMonFloat) < 1e6)
...

@+

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage


Classé sous : cout, sommet, if, triiso, calclong

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS