IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

je vois pas la différence entre ces 2 codes


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut je vois pas la différence entre ces 2 codes
    Salut tous,

    j'ai un ami qui m'a donné un bout de code pour effectuer une certaine opération sur les données "d'une famille". Je dois réutiliser ce code pour qu'il fonctionne pour "i" familles (et qu'il soit adapté à notre nouvelle implementation).

    1°) Mon probleme:
    A priori c'est facile mais quand je me mets dans le cas "i=1" (cas le plus simple) je me rends compte que mes resutats sont faux: je ne retrouve pas ses resultats donc mon implementation est différente de la sienne (donc pour les cas où "i" est différent de 1 alors c'est faux aussi).

    2°) Ma question:
    pourriez vous regardez les codes si dessous et me dire si vous voyer une différence entre les 2 car moi je n'en voit pas...

    petite precision:
    => le but de ce bout de code et de reclasser des données et en insérant des données au milieu de celles existantes
    => on va réarranger deux vecteurs "R" et "Nb" (qui ont la même taille)
    => dans mon code ce sont des vecteurs à deux dimensions, pour chaque famille "i" on a un vecteur "R" et un "Nb"

    Son code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    void maClasse::maMethode(double Nb_D)
    {
            int n=1;
            if(taille()>2)
            {
                    miseAjour();
    		//--------------------------------------------------------------------------------
    		//recherche du min et max et chargement de F
    		//--------------------------------------------------------------------------------
                    double minR=1e30;
                    double maxR=1e-30;
                    for(int L=0;L<taille();L++)
                    {
                        if(R[L]<minR)
    		    {
    	                 minR=R[L];
    		    }
                        if(R[L]>maxR)
    		    {
    			maxR=R[L];
    		    }
                    }
    		double AncienF=F;
    		//--------------------------------------------------------------------------------
    		//modification du classement
    		//--------------------------------------------------------------------------------
                    do
                    {
                            double NouveauRNmoins1, NouveauNbNmoins1, NouveauRN;
                            double NouveauNbN, NouveauRNplus1, NouveauNbNplus1;
     
                            if(fabs(R[n-1]-R[n])>2.0*(maxR-minR)/Nb_D)
                            {
     
                            n++;
                            }
                            n++;
                    }while(n<taille()-2);
    		//--------------------------------------------------------------------------------
    		//mise à jour
    		//--------------------------------------------------------------------------------
                    miseAjour();
                    double NouvelleF=F();
    		//--------------------------------------------------------------------------------
    		//dernier calcul
    		//--------------------------------------------------------------------------------
                    for(int z=0;z<taille();z++)
                            Nb[z]=Nb[z]*AncienF/NouvelleF;
                    miseAjour();
            }
    }
    Mon code (je fais la même chose mais pour chaque famille "i":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    void maClasse::maMethode(double Nb_D,Class2 &monObjet)
    {
       monObjet.miseAjour();
       //-------------------------------------------------------------------------------
       //initialisation specifique à mon code
       //-------------------------------------------------------------------------------
        vector <double> minR;
        vector <double> maxR;
        minR.clear();
        maxR.clear();
        vector <double> ancienF;
        vector <double> nouveauF;
        ancienF.clear();
        nouveauF.clear();
        //--------------------------------------------------------------------------------
        //recherche du min et max (et chargement de F)
        //--------------------------------------------------------------------------------
        //on charge nos vecteur à deux dimensions
        Nb.clear();
        R.clear();
        Nb=monObjet.getNb();
        R=monObjet.getR();
        //la recherche du min et max peut commencer
        for (int i=0;i<monObjet.get_nombreFamilles();i++)
        {
            //---------------------------------------
            int L=0;
            minR.push_back(1.0e30);
            maxR.push_back(1.0e-30);
            ancienF.push_back(monObjet.get_F(i));
            //----------------------------------------
            while (L<monObjet.get_taille(i))
            {
                if (R[i][L]>maxR[i])
                {
                    maxR[i]=R[i][L];
                }
                if (R[i][L]<minR[i])
                {
                    minR[i]=R[i][L];
                }
                L=L+1;
            }
        }
        //--------------------------------------------------------------------------------
        //modification du classement
        //--------------------------------------------------------------------------------
        for (int i=0;i<monObjet.get_nombreFamilles();i++)
        {
            int n=1;
            if (monObjet.get_taille(i)>2)
            {
                while(n<monObjet.get_taille(i)-2)
                {
     
                    double NouveauRNmoins1=0.0,NouveauNbNmoins1=0.0,NouveauRN=0.0;
                    double NouveauNbN=0.0,NouveauRNplus1=0.0,NouveauNbNplus1=0.0;
                    double maxR=maxR[i], minR=minR[i];
     
                    if(fabs(R[i][n-1]-R[i][n])>(2.0*maxR-2.0*minR)/Nb_D)
                    {
     
                        n=n+1;
                    }
                    n=n+1;
                }
                //--------------------------------------------------------------------------------
    	    //mise à jour
    	    //--------------------------------------------------------------------------------
                monObjet.miseAjour();
    			monObjet.keep(Nb,R);
     
                nouveauF.push_back(i);
                nouveauF[i]=monObjet.get_F(i);
                //--------------------------------------------------------------------------------
    	    //dernier calcul
    	    //--------------------------------------------------------------------------------
                for (int z=0;z<monObjet.get_taille(i);z++)
                {
                    Nb[i][z]=Nb[i][z]*(ancienF[i]/nouveauF[i]);
                }
                monObjet.keep(Nb,R);
                monObjet.miseAjour();
            }
        }
    	}

  2. #2
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    J'ai bien rigolé en lisant ton topic tellement que le sujet et le code sont incompréhensibles
    J'imagine qu'une """famille""" (je sais pas combien de guillemets il faut que je mette) est une structure définit dans une convention ratifiée par les signataires de la charte des nations unies un truc du genre

    Reprends de zéro

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    je vais tous reprendre, merci quand meme

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/06/2007, 18h03
  2. Réponses: 6
    Dernier message: 14/05/2007, 00h14
  3. [Conception] Quelle est la différence entre ces modèles ?
    Par ukanoldai dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 10/01/2007, 17h17
  4. Ma chaîne SQL ne fait pas la différence entre un H et un h
    Par beegees dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 22/03/2006, 16h23
  5. [Type Sql] Quelles différences entre ces bases ?
    Par wonderboy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 16/03/2006, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo