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 :

Demande code source en C++


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut Demande code source en C++
    Bonjour je suis débutant en c++ et j'aimerai que vous m'aidez à résoudre cet exercice que j'ai trouvé dans un livre de c++:

    Pour chacune des relations suivantes, soit prouver qu'il existe une équivalence relation ou de prouver que ce n'est pas une relation d'équivalence.
    (a) Pour les nombres entiers a et b, a ≡ b si et seulement si a + b est pair.
    (b) Pour les nombres entiers A et B, A ≡ B si et seulement si a + b est impair.
    (c) pour les nombres rationnels non nuls a et b, a ≡ b si et seulement si a * b> 0.
    (D) pour les nombres rationnels non nuls a et b, a ≡ b si et seulement si a = b est un nombre entier.
    (e) Pour les nombres rationnels a et b, a ≡ b si et seulement si a/b est un entier.
    (f) Pour les nombres rationnels a et b, a ≡ b si et seulement si | a b | ≤ 2. Démontrer les équations en utilisant l'induction mathématique.

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

    Informations professionnelles :
    Activité : aucun

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

    Je ne sais pas si tu essayes d'apprendre C++ de manière autodidacte ou pour tes cours, mais cela n'a pas énormément d'importance.

    Le fait est que, si l'on s'amuse à te donner du "code tout fait", tu n'apprendras jamais rien.

    Nous essayons vraiment de respecter le principe du "donne un poisson à quelqu'un, il mangera un jour, apprends lui à pêcher... (tu connais la suite )"

    Comprends bien que nous n'avons rien contre le fait d'aider quelqu'un, même s'il est débutant, mais, dans le cas présent, répondre à ta demande serait vraiment te rendre le plus mauvais service qui soit.

    Généralement, les livres, les tutoriels et les cours sont faits de manière à ce qu'un exercice particulier ne pose pas vraiment de problème, si l'on a déjà compris ce qui précède.

    Nous pouvons éventuellement nous arranger pour te donner des explications qui t'aideront à comprendre un aspect particulier que tu n'aurais pas compris, mais il faut que tu fasses aussi ta part du travail

    Or, ces exercices sont excessivement basiques. Je te conseilles donc de relire ce que tu as déjà lu et d'essayer d'aller "aussi loin que possible" dans leur résolution.

    Si tu coinces vraiment sur un point donné, reviens alors vers nous avec le code que tu auras écrit, et nous verrons s'il est possible de t'aider autrement qu'en te disant "relis ton livre"
    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
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    salut et merci.

    J'essaie d'apprendre C++ de manière autodidacte et comme tu l'as si bien dit, cela n'a pas assez d'importance.
    En effet je ne veux pas une solution toute faite mais juste des directives pour au moins ainsi je pourrais faire mon code source.

    Merci.

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par zidas Voir le message
    salut et merci.

    J'essaie d'apprendre C++ de manière autodidacte et comme tu l'as si bien dit, cela n'a pas assez d'importance.
    En effet je ne veux pas une solution toute faite mais juste des directives pour au moins ainsi je pourrais faire mon code source.

    Merci.
    Hé bien, a priori, si tu as trouvé cet exercice dans un bouquin, tu as toutes les informations nécessaires "juste avant" : comment créer une fonction, quelle fonction est indispensable, comment comparer deux nombres, les additionner, les soustraire et les diviser.

    La seule directive que je puisse donc te donner, outre bien sur de revenir quelques pages en arrière dans ton livre, c'est de prendre chaque problème de manière séparée: Commence par (essayer de) résoudre la question A.

    Si tu as vraiment un problème, vient avec le code en nous expliquant ce que tu veux faire et ce que tu obtiens
    Une fois que tu auras résolu la question A, les autres s'enchaineront automatiquement car ce n'est jamais qu'une variation sur le même thème du "peut on considérer que l'équivalence est vraie"
    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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    ok sa marche.. je fais le code et si sa ne va pas je le posterais

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    #include <iostream>
    #include <math.h>
     
    using namespace std;
     
    int main()
    {
        cout << "Hello world!" << endl;
        cout << "Donner un premier nombre. \n" << endl;
        cout << "Donner un deuxième nombre. \n" << endl;
     
        int pair (int , int );
           int z;
           int x;
           int y;
           z=x+y;
           if ((z%2 == 0))
               cout << "x et y sont identiques. \n" << endl;
           else
               cout << "x et y ne sont pas identiques. \n" << endl;
     
     
        int impair (int , int );
           int d;
           int r;
           int s;
           d=r-s;
           if ((d%2 != 0))
               cout << "r et s sont identiques. \n" << endl;
           else
               cout << "r et s ne sont pas identiques. \n" << endl;
     
     
        float fraction (float , float );
           float h;
           float e;
           float f;
           h=e*f;
           if ((e>0 && f>0))
           {
               if ((h>0))
     
               cout << "e et f sont identiques. \n" << endl;
           else
               cout << "e et f ne sont pas identiques. \n" << endl;
     
           };
     
     
     
        int fractionnel (int , int );
           int i;
           int k;
           int j;
           i=k/j;
           if ((i))
               cout << "k et j sont identiques. \n" << endl;
           else
               cout << "k et j ne sont pas identiques. \n" << endl;
     
     
        int difference (int , int );
           int q;
           int w;
           int g;
           q=w-g;
           if ((q))
               cout << "w et g sont identiques. \n" << endl;
           else
               cout << "w et g ne sont pas identiques. \n" << endl;
     
     
        float valeur (float , float );
           int l;
           float m;
           float n;
           l=m-n;
           if ((l<2 || l==2))
               cout << "m et n sont identiques. \n" << endl;
           else
               cout << "m et n ne sont pas identiques. \n" << endl;
     
     
    }
     
     
        int pair (int a, int b)
        {
            cout << "La fonction paire. \n" << endl;
           int c;
                 c=a+b;
           if ((c%2==0))
               cout << "a et b sont identiques. \n" << endl;
           else
               cout << "a et b ne sont pas identiques. \n" << endl;
     
       return(0);
     
        }
     
     
     
     
     
     
        int impair (int a, int b)
        {
            cout << "La fonction impaire. \n" << endl;
           int c;
           c=a-b;
           if ((c%2 != 0))
               cout << "a et b sont identiques. \n" << endl;
           else
               cout << "a et b ne sont pas identiques. \n" << endl;
     
       return(0);
     
        }
     
     
        float fraction (float a, float b)
          {
              cout << "La fonction fraction. \n" << endl;
           float c;
           c=a*b;
           if ((a>0 && b>0))
           {
                if ((c>0))
               cout << "a et b sont identiques. \n" << endl;
           else
               cout << "a et b ne sont pas identiques. \n" << endl;
           }
     
       return(0);
     
          }
     
        int fractionnel (int a, int b)
        {
            cout << "La fonction fractionnel. \n" << endl;
           int c;
           c=a/b;
           if ((c))
               cout << "a et b sont identiques. \n" << endl;
           else
               cout << "a et b ne sont pas identiques. \n" << endl;
     
       return(0);
     
        }
     
     
        int difference (int a, int b)
        {
            cout << "La fonction difference. \n" << endl;
           int c;
           c=a-b;
           if ((c))
               cout << "a et b sont identiques. \n" << endl;
           else
               cout << "a et b ne sont pas identiques. \n" << endl;
     
       return(0);
     
        }
     
     
     
        float valeur (float a, float b)
     
           {
             cout << "La fonction valeur. \n" << endl;
             int c;
             c=a-b;
           if ((c<2 || c==2))
               cout << "a et b sont identiques. \n" << endl;
           else
               cout << "a et b ne sont pas identiques. \n" << endl;
     
         return(0);
     
           }

    j'ai fais la compilation mais il y a une même erreurs qui est répétée dans chaque des fonctions et je n'arrive pas à les corriger. Merci de m'aider...

  7. #7
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Hello,

    plusieurs choses :
    Le prototype de tes fonctions ne doit pas être dans une autre fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    bool pair(int a, int b);
    int main() {
       ...
       bool result = pair(1, 2); // Appel de la fonction
       ...
    }
    bool pair(int a, int b) {
       ...
    }
    Bien que tu n'utilises pas les std::pair (qui n'ont rien à voir avec ta fonction), tu ne devrais pas avoir de using namespace::std et une fonction nommée pair pour éviter les problèmes. (Tu ne devrais même pas avoir du tout de using namespace std; )
    Tu n'appelles pas non plus des fonctions (cf mon 1er bout de code pour la syntaxe d'appel).
    Et tes fonctions devraient probablement retourner un bool
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    bool pair(int a, int b) {
    	int c = a+b;
    	bool ret = (c%2 == 0);
    	return ret;
    }
    Tu peux ainsi traiter le résultat dans la fonction appelante (faire un affichage par exemple).

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Ah, maintenant, on peut t'aider

    Mais pour te permettre d'évoluer, dans un premier temps, je vais me contenter de te donner des indices, pour que tu puisses corriger le code par toi-même

    -Quand on parle d'une fonction, il faut faire la distinction entre
    1- Sa déclaration qui prend la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     valeur_de_retour nom (liste d'argument avec leur type);
    2- Sa définition qui prend la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    valeur_de_retour nom (liste d'argument avec leur type)
    {
        // 
        // ce qu'elle doit faire
    }
    Ce qui se trouve entre les accolades s'appelle le "corps de la fonction" et correspond aux instructions qu'elle doit exécuter

    3- Et enfin son appel qui prend la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    variable = nom (arguments requis);
    ou de
    si l'on ne veut pas récupérer la valeur de retour (ou pour les fonction qui renvoient void)

    - La déclaration permet aut compilateur de savoir que la fonction existe. Dans un gros projet, elle sera placée dans un fichier séparé que l'on appel "fichier d'en-tête et dont l'extension est .h ou .hpp.

    On pourra inclure ce fichier partout où l'on a besoin de la fonction

    - La définition permet au compilateur de savoir ce que la fonction doit faire et donc de générer le code compréhensible par le processeur correspondant.

    Elle prend place dans un fichier dit "d'implémentation" qui a généralement l'extension .cpp

    - L'appel enfin prend place à l'intérieur du "corps" d'une autre fonction pour demander au compilateur d'exécuter la fonction qui a été déclarée et définie.

    - La fonction dont tu as absolument besoin est la fonction main dont le prototype est soit int main() soit int main (int argc , char ** argv), qui ne doit pas être déclarée, mais qui doit être définie (c'est le "point d'entrée" utilisé par le système d'exploitation pour lancer l'application)

    - On ne peut pas déclarer ni définir une fonction dans le corps d'une autre

    - Le compilateur lit le code comme tu lirais un roman : de la première ligne à la dernière et ne sait donc pas ce qui se passe à la ligne 13 lorsqu'il est à la ligne 10.

    Pour que le compilateur connaisse une fonction lorsqu'on essayer de l'appeler, sa déclaration suffit, mais elle est indispensable, même si la définition arrive "plus tard" (voir, dans un fichier d'implémentation séparé).

    Avec toutes ces informations, tu devrais pouvoir corriger ton code "par toi même"

    PS : Quand je te proposais de faire chaque point séparément, l'idée était surtout d'essayer de faire fonctionner chaque point séparément, et de ne passer au point suivant que lorsque tu a réussi a faire fonctionner le point précédant

    [EDIT] @Iradille, tu n'es pas sympa, il n'apprendra jamais si tu lui donne toutes les réponses ... Laisses le un peu chercher que diable
    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

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    en me référant sur vos bouts de code, j'ai réussi à l'écrire ainsi mais il y a de erreurs de compilation que je mettrais en bas du code. Merci de me venir en aide.
    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
    88
    89
    90
    #include <iostream>
    #include <math.h>
     
    using namespace std;
     
    int pair (int a, int b);
    int impair (int x, int y);
    float fraction (float m, float n);
    int fractionnel (int i, int j);
    int difference (int k, int h);
    float valeur (float d, float e);
     
     
     
    int main()
    {
        cout << "Hello world!" << endl;
        cout << "Donner un premier nombre. \n" << endl;
        cout << "Donner un deuxième nombre. \n" << endl;
     
        int ret = pair (1, 2);
        int result = impair (1, 2);
        float result1 = fraction (1, 2);
        int result2 = fractionnel (1, 2);
        int result3 = difference (1, 2);
        float result4 = valeur (1, 2);
     
     
    };
     
     
    int pair(int a, int b)
    {
        cout << "La fonction paire. \n" << endl;
    	int c = a+b;
    	int ret = (c%2 == 0);
    	return ret;
    };
     
     
        int impair (int x, int y)
        {
           cout << "La fonction impaire. \n" << endl;
           int z = x-y;
           int resultl = ((z%2 != 0));
           return result;
     
        };
     
     
        float fraction (float m, float n)
          {
              cout << "La fonction fraction. \n" << endl;
           float l = m*n;
           float resultl1 = ((m>0 && n>0 || l>0));
           return result1;
     
          };
     
     
        int  fractionnel (int i, int j)
        {
            cout << "La fonction fractionnel. \n" << endl;
           int r = i/j;
           int result2 = ((r));
           return result2;
     
        };
     
     
        int  difference (int k, int h)
        {
            cout << "La fonction difference. \n" << endl;
           int p = k-h;
           int resultl3 = ((p));
           return result3;
     
        };
     
     
     
        float  valeur (float d, float e)
     
           {
             cout << "La fonction valeur. \n" << endl;
             int f = d-e;
             float resultl4 = ((f<2 || f==2));
             return result4;
     
           };
    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
    -------------- Build: Debug in raissa1 ---------------
     
    Compiling: main.cpp
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘int main()’:
    /home/zisa/Bureau/raissa1/main.cpp:21:15: erreur: reference to ‘pair’ is ambiguous
    /home/zisa/Bureau/raissa1/main.cpp:6:5: erreur: candidats sont: int pair(int, int)
    /usr/include/c++/4.6/bits/stl_pair.h:87:12: erreur:                 template<class _T1, class _T2> struct std::pair
    /home/zisa/Bureau/raissa1/main.cpp:21:9: attention : unused variable ‘ret’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp:22:9: attention : unused variable ‘result’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp:23:11: attention : unused variable ‘result1’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp:24:9: attention : unused variable ‘result2’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp:25:9: attention : unused variable ‘result3’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp:26:11: attention : unused variable ‘result4’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘int impair(int, int)’:
    /home/zisa/Bureau/raissa1/main.cpp:46:15: erreur: ‘result’ was not declared in this scope
    /home/zisa/Bureau/raissa1/main.cpp:45:12: attention : unused variable ‘resultl’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘float fraction(float, float)’:
    /home/zisa/Bureau/raissa1/main.cpp:55:43: attention : suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
    /home/zisa/Bureau/raissa1/main.cpp:56:15: erreur: ‘result1’ was not declared in this scope
    /home/zisa/Bureau/raissa1/main.cpp:55:14: attention : unused variable ‘resultl1’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘int difference(int, int)’:
    /home/zisa/Bureau/raissa1/main.cpp:76:15: erreur: ‘result3’ was not declared in this scope
    /home/zisa/Bureau/raissa1/main.cpp:75:12: attention : unused variable ‘resultl3’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘float valeur(float, float)’:
    /home/zisa/Bureau/raissa1/main.cpp:88:17: erreur: ‘result4’ was not declared in this scope
    /home/zisa/Bureau/raissa1/main.cpp:87:16: attention : unused variable ‘resultl4’ [-Wunused-variable]
    /home/zisa/Bureau/raissa1/main.cpp:90:8: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘int difference(int, int)’:
    /home/zisa/Bureau/raissa1/main.cpp:78:5: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘float fraction(float, float)’:
    /home/zisa/Bureau/raissa1/main.cpp:58:7: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘int impair(int, int)’:
    /home/zisa/Bureau/raissa1/main.cpp:48:5: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
    Process terminated with status 1 (0 minutes, 0 seconds)

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

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Il ne faut généralement pas trop s'en faire lorsqu'on voit de tres nombreuses erreurs.

    Le fait est que, lorsque le compilateur rencontre une erreur, il a tendance à considérer tout ce qui se trouve après comme incorrect.

    Il faut donc généralement s'intéresser aux premières erreurs qu'il indique car en les corrigeant, on corrige toutes les suivantes

    Dans le cas présent, ce sont les quatre premières lignes qui t'importent, à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘int main()’:
    /home/zisa/Bureau/raissa1/main.cpp:21:15: erreur: reference to ‘pair’ is ambiguous
    /home/zisa/Bureau/raissa1/main.cpp:6:5: erreur: candidats sont: int pair(int, int)
    /usr/include/c++/4.6/bits/stl_pair.h:87:12: erreur:                 template<class _T1, class _T2> struct std::pair
    Mais, alors, pour comprendre ce qui se passe, il va falloir t'accrocher un tout petit peu (l'explication sera longue, alors que la correction te prendra à peine 5 seconde )

    Il faut savoir que C++ vient avec une bibliothèque standard qui se trouve dans l'espace de noms std.

    Un espace de noms est une espèce de boite dans laquelle on regroupe tout ce qui vient avec une bibliothèque de manière à éviter justement les conflits de nommage.

    La bibliothèque standard vient, par exemple, avec une structure pair qui agrège deux données de type différents.

    Comme cette structure est dans l'espace de noms std, il n'y a normalement aucun problème : pour l'appeler, nous devrions utiliser std::pair, ce qui éviterait normalement le risque de conflit avec ta fonction... bool pair(int, int)

    Sauf que voilà : ton code contient une directive qui va foutre le bordel intégral dans ce truc si bien pensé : using namespace std; .

    Cette directive a pour effet de dire au compilateur
    Ecoute, tu peux faire comme si tout ce qui se trouve dans l'espace de noms std était dans l'espace de noms global (autrement dit dans l'espace de noms dans lequel se trouve tout le code que tu as écrit)
    Du coup, le compilateur connait la classe template<typename, typename> pair (qui se trouvait à l'origine dans l'espace de noms std) et ta fonction pair(int, int) et il n'arrive pas à choisir entre l'un ou l'autre lorsque tu écris le code pair (1, 2); parce que cela peut aussi bien correspondre à l'appel de ta fonction qu'à un constructeur de cette fameuse structure std::pair.

    Pour comprendre pourquoi il ne sait pas faire la différence, il te manque peut etre une information importante : quand il choisi la fonction qui est appelée, le compilateur ne fait aucun cas du type de retour.

    Il vérifie que le type de retour de la fonction correspond bien au type de la donnée qui le récupère... juste après, mais malheureusement déjà trop tard dans le cas qui nous occupe


    Tu as donc deux solutions pour résoudre ce problème :

    une rapide qui consiste à changer le nom de ta fonction en isPair, par exemple (attention, il faut le faire partout )

    Et ma préférée qui consiste dés le départ à bannir la directive using namespace std; de ton vocabulaire de développeur.

    Elle occasionnera une correction un poil plus longue parce que, si tu supprimes cette ligne (elle se trouve à la ligne 4 de ton code ), tu devras rechercher tous tes cout et les remplacer par des std::cout, mais c'est vraiment une habitude saine à prendre

    Au passage, math.h déclare des fonctions que tu n'utilises pas ici (comme sin, cos, tan et autres), l'inclusion de ce fichier est donc tout à fait inutile
    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

  11. #11
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par zidas Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /home/zisa/Bureau/raissa1/main.cpp: In function ‘int main()’:
    /home/zisa/Bureau/raissa1/main.cpp:21:15: erreur: reference to ‘pair’ is ambiguous
    /home/zisa/Bureau/raissa1/main.cpp:6:5: erreur: candidats sont: int pair(int, int)
    /usr/include/c++/4.6/bits/stl_pair.h:87:12: erreur:                 template<class _T1, class _T2> struct std::pair
    Citation Envoyé par Iradrille Voir le message
    Bien que tu n'utilises pas les std::pair (qui n'ont rien à voir avec ta fonction), tu ne devrais pas avoir de using namespace::std et une fonction nommée pair pour éviter les problèmes. (Tu ne devrais même pas avoir du tout de using namespace std; )
    Va soit falloir virer le using namespace std;, soit renommer ta fonction, il y à un conflit avec quelques chose de déjà existant.

    Concernant les autres erreurs, réfléchis au type de chaque expression que tu écris, il y à des incohérences (qui ne seront probablement que des warnings, une fois que tu auras corrigé les fautes de frappes).

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    sa marcher.. il n'y a plus d'erreurs de compilation, je suis très heureux.. Merci à vous!
    J'aimerai savoir maintenant, les instructions qu'il me faut pour pouvoir entrer les nombres sur mon écran d’exécution et afin de voir si les opérations des différentes fonctions donnent les résultats correctes. Merci

  13. #13
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int i;
    float f;
    std::cin >> i >> f;
    Cela lira d'abords un int, puis un float. Le fonctionnement est semblable à std::cout.
    Liste des types supportés et doc ici

Discussions similaires

  1. demande de code source C++ pour communication SIP
    Par fabio003 dans le forum C++
    Réponses: 0
    Dernier message: 27/08/2007, 17h14
  2. Demande d'aide pour un problème de code source sur devC++
    Par Rickantonais dans le forum Débuter
    Réponses: 28
    Dernier message: 01/08/2007, 14h09
  3. Demande d'aide sur un code source
    Par Soward dans le forum SDL
    Réponses: 3
    Dernier message: 13/06/2007, 20h22
  4. Réponses: 1
    Dernier message: 26/03/2007, 18h50
  5. demande de code source perl
    Par visteur dans le forum Langage
    Réponses: 3
    Dernier message: 13/03/2006, 12h05

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