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 :

[Debutant] Erreur Livre (Comment programmer en C++ Deitel) ?


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 185
    Par défaut [Debutant] Erreur Livre (Comment programmer en C++ Deitel) ?
    Bonsoir tout le monde

    Je suis en train de lire le chapitre sur les pointeurs, voici la source qui me pose problème :
    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
     
    #include <iostream>
     
    using std::cout;
    using std::endl;
     
    #include <iomanip>
     
    using std::setw;
     
    void triBulle( int *, const int );
     
    int main()
    {
        const int tailleTableau = 10;
        int a[ tailleTableau ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };
        int i;
     
        cout << "Elements de donnees dans l'ordre initial\n";
     
        for ( i = 0; i < tailleTableau; i++ )
            cout << setw ( 4 ) << a[ i ];
     
        triBulle( a, tailleTableau );
     
        cout << "\n Elements de donnees en ordre ascendant\n";
     
        for ( i = 0; i < tailleTableau; i++ )
            cout << setw ( 4 ) << a[ i ];
     
        cout << endl;
        system("PAUSE");
        return 0;
    }
     
    void triBulle( int *tableau, const int taille )
    {
        void permutation( int * const, int * const );
     
        for ( int passage = 0; passage < taille - 1; passage++ )
     
            for ( int j = 0; j < taille - 1; j++ )
     
                if ( tableau [ j ] > tableau[ j + 1 ] )
                    permutation( &tableau [ j ], &tableau[ j ] );
    }
     
    void permutation( int * const element1Ptr, int * const element2Ptr )
    {
        int maintien = *element1Ptr;
        *element1Ptr = *element2Ptr;
        *element2Ptr = maintien;
    }
    Je la lis bien en détail comme toujours pour bien comprendre son fonctionnement et .. là j'ai un tilt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void permutation( int * const element1Ptr, int * const element2Ptr )
    {
        int maintien = *element1Ptr;
        *element1Ptr = *element2Ptr;
        *element2Ptr = maintien;
    }
    Je me dis bah comment s'est possible ? Les 2 paramètres sont des constances mais dans la fonction on essaye d'y attribuer une autre valeur ?
    Donc j'essaye la source, rien à faire elle ne fonctionne pas, cependant aucun message d'erreur.

    Une explication ? Je débute et je suis à vrai dire un peu pommé la !

    Merci par avance,

    Cordialement,
    Mathieu.

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 641
    Par défaut
    Salut, et bienvenue sur le forum

    en fait, l'erreur ne se situe pas au niveau de permutation... mais de l'appel à cette fonction...

    En effet - mais, il faudra vérifier s'il s'agit d'une simple erreur de copie de ta part, ou s'il s'agit d'une erreur dans le livre - l'appel ne doit pas se faire sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    permutation( &tableau [ j ], &tableau[ j ] );
    mais bien sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    permutation( &tableau [ j ], &tableau[ j+1 ] );
    vu qu'il n'y a aucun intéret de permuter un élément... avec lui-même... et, surtout pas, après l'avoir comparé... à l'élément qui le suit

    Et, pour info, la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void permutation( int * const element1Ptr, int * const element2Ptr )
    permet de signaler que le pointeur est constant, mais que l'on accepte de modifier la valeur de l'élément pointé par celui-ci
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2004
    Messages
    185
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 185
    Par défaut
    Bonjour.

    Tout d'abord merci pour la réponse, non je n'ai pas fais d'erreur, j'ai vérifier avec la source disponible sur le CD. Je suis déçu ! Dommage, enfin bon, rien ne peut être parfait je crois .
    Ta correction marche , et merci pour l'info, j'ai enfin compris, on ne touche pas à sa valeur mais à la valeur de celui qu'il pointe.

    Je ne peux que te remercier !

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

Discussions similaires

  1. "Comment programmer en C++" de Deitel & Deitel
    Par jerome71300 dans le forum C++
    Réponses: 2
    Dernier message: 25/02/2008, 15h03
  2. livre "Comment programmer en C++"
    Par [Hugo] dans le forum Contribuez
    Réponses: 14
    Dernier message: 27/10/2007, 10h54
  3. livre "Comment programmer en C++"
    Par [Hugo] dans le forum C++
    Réponses: 14
    Dernier message: 27/10/2007, 10h54
  4. [Debutant][XSL] Erreur de code programmation
    Par SkyDev dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 14/03/2006, 22h38
  5. [Debutant] [Windows] livre programmation windows
    Par orelero dans le forum Windows
    Réponses: 8
    Dernier message: 11/02/2005, 13h32

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