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 :

Erreur de compilation


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut Erreur de compilation
    Bonjour chers amis développeur en C++ ! Jsuis nouveau et je crois avoir besoins de votre aide pour mes erruers dans mon code ! En effet j'ai décidé de faire une simple calculatrice développé en C++ mais en mode console (Un peu naze mais bon, jsuis un debutant) et voici mon 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
    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
    #include <iostream>
    #include <string>
    #include <cmath>
    using namespace std;
     
    int main()
    {
        bool repeter (true);
        while (repeter==true); {
     
        cout <<"                          Calculatrice By Menzan Christian !"<< endl;
        char choix;
        do {
        cout <<"Pour effectuer une :"<< endl;
        cout <<" Additon appuyer sur \"+\" "<< endl;
        cout <<" soustraction appuyer sur \"-\" "<< endl;
        cout <<" multiplication appuyer sur \"*\" "<< endl;
        cout <<" division appuyer sur \"/\" "<< endl;
        cout <<"Faite votre choix : ";
        cin >> choix; }
        while (choix!='+' || choix!='-' || choix!='*' || choix!='/');
        switch(choix) {
            case '+' :
                int nb;
                cout <<"Donner le nombre d'operande pour le calcul : ";
                cin >>nb;
                int compteur (1);
                double somme (0);
                for (compteur=1; compteur<=nb; compteur++) {
                        double nombre;
                    cout <<"Donner le nombre "<< compteur <<" : ";
                    cin >> nombre;
                    somme= somme+nombre; }
                    cout<<"Le resultat est : "<< somme <<" !" << endl;
                break;
     
             case '-':
                int nb;
                cout <<"Donner le nombre d'operande pour le calcul : ";
                cin >>nb;
                int compteur (1);
                double somme (0);
                for (compteur=1; compteur<=nb; compteur++) {
                        double nombre;
                    cout <<"Donner le nombre "<< compteur <<" : ";
                    cin >> nombre;
                    somme= somme-nombre; }
                    cout<<"Le resultat est : "<< somme <<" !" << endl;
                break;
     
              case '*' :
                int nb;
                cout <<"Donner le nombre d'operande pour le calcul : ";
                cin >>nb;
                int compteur (1);
                double somme (0);
                for (compteur=1; compteur<=nb; compteur++) {
                        double nombre;
                    cout <<"Donner le nombre "<< compteur <<" : ";
                    cin >> nombre;
                    somme= somme*nombre; }
                    cout<<"Le resultat est : "<< somme <<" !" << endl;
                break;
     
               case '/' :
                int nb;
                cout <<"Donner le nombre d'operande pour le calcul : ";
                cin >>nb;
                int compteur (1);
                double somme (0);
                for (compteur=1; compteur<=nb; compteur++) {
                        double nombre;
                    cout <<"Donner le nombre "<< compteur <<" : ";
                    cin >> nombre;
                    somme= somme/nombre; }
                    cout<<"Le resultat est : "<< somme <<" !" << endl;
                break;
     
               default :
                cout <<"Erreur système" <<endl;
                break;
                }
     
    }
        return 0;
    }
    Le problème est que quand je le compile, on me signale plusieurs erreurs que j'arrive pas a corriger ! J'ai besoins de votre aide pour analyser mon code
    et mieux m'expliquer les erreurs que j'ai commises et j'aimerais que vous m’aidiez a les corrigés ! Merci de votre attention et j'attend vos réponses !
    MERCI D'AVANCE !

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Billets dans le blog
    21
    Par défaut
    Hello,

    que te dit ton compilateur exactement?

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 735
    Par défaut
    Bonjour.



    Ton code présente plusieurs problèmes :

    bool repeter (true); On préfère la syntaxe bool repeter = true; pour initialiser les variables.


    while (repeter==true); {
    Attention à ce point-virgule vicieux, car il empêche tout ce qui suit entre les accolades de s’exécuter !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int nb;
    cin >>nb;
    int compteur (1);
    double somme (0);
    Les variables locales avec le même nom ne peuvent pas être déclarées à l'intérieur d'un switch, même dans deux case différents. Il faut les déplacer à l’extérieur.


    do {/**/} while (choix!='+' || choix!='-' || choix!='*' || choix!='/'); Il vaut mieux remplacer les || par des &&.

    Il n'y a aucun moyen de sortir de la première boucle (répéter vaut toujours true).

    Lors de la division, tu ne vérifies pas si l'utilisateur divise par 0 (ce qui est mathématiquement impossible).

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Par ailleurs, il n'est pas vraiment intéressant d'écrire while (condition==true) ou if (condition==true).
    En effet, dans les deux cas, l'expression entre parenthèse est comparée à true.

    while (condition) ou if (condition) suffisent, sont équivalentes aux précédentes, et sont à la fois plus concise et plus claire si la variable condition est bien nommée.

  5. #5
    Membre averti
    Homme Profil pro
    Doctorant
    Inscrit en
    Novembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 15
    Par défaut
    Bonjour,

    Mis à part les erreurs d'écriture, il y a également une réflexion à avoir sur la structure du code. Apprendre le C++ ne consiste pas seulement à savoir écrire en C++ mais aussi à penser objet.

    Bonne continuation et bon courage !

  6. #6
    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,
    Citation Envoyé par manudiclemente Voir le message
    bool repeter (true); On préfère la syntaxe bool repeter = true; pour initialiser les variables.
    Humm... à voir...

    De manière générale, les deux codes font absolument la même chose mais le premier ( bool repeter (true); ) utilise une syntaxe qui sera forcément acceptée n'importe quand, alors que le second pourrait ne pas être accepté par certains types définis par l'utilisateur (comme les classes ayant sémantique d'entité).

    L'un dans l'autre, utiliser la syntaxe qui correspond à l'utilisation d'un (pseudo) constructeur est donc beaucoup plus intéressant car susceptible de fonctionner systématiquement.
    Citation Envoyé par MisterBobo Voir le message
    Bonjour,

    Mis à part les erreurs d'écriture, il y a également une réflexion à avoir sur la structure du code. Apprendre le C++ ne consiste pas seulement à savoir écrire en C++ mais aussi à penser objet.
    Heu, là encore, il y a moyen de chicaner un sérieux coup...

    Bien sur, le paradigme orienté objet apporte énormément de facilités, mais, s'il fallait s'en tenir à ce seul paradigme, C++ aurait fait comme d'autres langages et aurait fait en sorte de ne permettre que ce paradigme.

    Or, C++ est un langage multi paradigme ou -- étant donné la définition quelque peut restrictive que l'on trouve pour le terme paradigme -- disons multi points de vues et permet l'utilisation des paradigmes impératif pur et générique, et tu peux avoir la certitude que c'est parce qu'il a une bonne raison pour ce faire

    Le paradigme orienté objet est parfait pour résoudre les problèmes de substituabilité, mais ce n'est pas pour cela qu'il faut forcément l'utiliser à tord et à travers lorsque de simples fonctions libres suffisent amplement.

    Par contre, il y a une chose qui est tout à fait vraie et qui correspond peut être à ce que tu voulais dire concernant le code de notre ami : il devrait veiller à respecter le principe de la responsabilité unique. Chaque type et chaque fonction ne devraient avoir qu'une seule responsabilité clairement établie afin de s'assurer qu'il la prenne correctement en charge.

    Dans le code de la fonction main, je vois assez facilement de quoi faire trois fonctions distinctes, répondant chacune à un besoin clairement distinct. Mais, bien qu'il s'agisse du S de SOLID, ce principe est valable pour n'importe quel paradigme
    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

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 2
    Par défaut
    les erreurs se signalent a partir du : case '-' ; a la ligne 37

  8. #8
    Membre averti
    Homme Profil pro
    Doctorant
    Inscrit en
    Novembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 15
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Heu, là encore, il y a moyen de chicaner un sérieux coup...

    Or, C++ est un langage multi paradigme ou -- étant donné la définition quelque peut restrictive que l'on trouve pour le terme paradigme -- disons multi points de vues et permet l'utilisation des paradigmes impératif pur et générique, et tu peux avoir la certitude que c'est parce qu'il a une bonne raison pour ce faire

    Le paradigme orienté objet est parfait pour résoudre les problèmes de substituabilité, mais ce n'est pas pour cela qu'il faut forcément l'utiliser à tord et à travers lorsque de simples fonctions libres suffisent amplement.
    J'en conviens tout à fait et sur tous les points.

    Je vais détailler mon idée, C++ a été réalisé dans le but d'intégrer le paradigme objet sur la base du C et de ce fait il autorise en autre la programmation procédurale (qui pour être correctement réalisée devrait respecter le S de SOLID emprunté à la POO). Toutefois je voulais signifier que quitte à choisir un langage orienté objet autant utiliser la "méthode de conception" objet (penser objet) qui, à mon sens, ne consiste pas nécessairement à définir systématiquement des classes - on pourrait peut être s'en passer ici - mais surtout à se poser les (bonnes ?) questions de sorte à apporter une structure à son programme. Appliquée ici, elle n'aurait peut être pas apporté la structure la plus pertinente mais y en aurait au moins apporté une.

    Je peux cependant modérer mon propos, apprendre le C++ ne consiste pas seulement à savoir écrire en C++ mais entre autre à penser objet.

    Mais si penser objet n'est pas l'unique concept nécessaire à la maîtrise du C++ c'est un prérequis à sa compréhension et c'est indispensable pour aller plus loin. Par ailleurs s'investir dans la pensée objet ne permet pas uniquement de structurer un programme mais également de visualiser ou construire des structures logicielles plus complexes, de formuler des problèmes (hors programmation), ...

    Cela n'engage que moi mais je pense que c'est une bonne façon de débuter et qui ouvre le champs des possibles .

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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