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 :

bizzare..!


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut bizzare..!
    Bonjour,

    Voici en pièce jointe une prise d'écran d'un programme c++ sous visual c++6 dont le résultat ne semble pas obéir au code , ce dernier vise à compter les entiers entrés et d'en afficher la somme , mais ce qui est étonnant c'est que le compilateur ne semble pas prendre le premier entier en compte ! pourquoi ?
    Images attachées Images attachées  

  2. #2
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    -main retourne int
    -<iostream> tout court
    -'\n' ya "endl"
    -faut enlever le premier "cin".
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    hélas la photo est rendue illisible ! je vais vous donner le code prochainement

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    si, si elle est claire ! mais je ne vous ai pas compris seriousme , un peu plus d'explication

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    seriousme , pourquoi il faut enlever le premier cin>> ?et avec quoi se fait l'entrée itérative ?

  6. #6
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    A la place de:
    on peut faire:
    Le "cin" avant la boucle "for" lit un nombre qui n'est pas utilisé donc pas dans la somme.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il veut dire que le premier "cin >> n" est sorti de la boucle, et ne sera donc pas pris en compte pour le calcul de la somme.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    c'est le '\n qui pose problème en lui même ou quoi ? je l'ai toujours utilisé sous VC++ 6 et il n'a jamais posé problème !

  9. #9
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Non il ne pose pas problème, mais "endl" est fait pour.
    C'était juste une remarque générale, rien de spécifique au problème ici qui est le "cin" avant la boucle "for".
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    Gomila , et avec quoi se fait l'entrée des entiers ?

  11. #11
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Avec le deuxième cin dans la boucle.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    le deuxième cin>> c'est pour l'input à chaque cycle , mais j'ai fait une entrée manuelle d'une série d'entiers 6 4 3 0 avec le premier cin , si je l'enlève avec quoi se fera cette entrée manuelle ?

  13. #13
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Sinon en le laissant:
    il faut mettre juste après:
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    il ne s'agit pas de trouver un remède quelconque à ce programme , ce qui m'interesse c'est le mécanisme ALGORITHMIQUE de son execution , pouvez vous me schematiser comment le programme a été exécuté sachant que le premier cin c'est pour l'entrée MANUELLE car la série d'entiers n'existe pas ailleurs !

  15. #15
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Tu pourrais aussi rendre ton code plus lisible en l'alignant mieux, car en ce moment c'est très difficile à lire.
    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
    #include <iostream>
     
    int main() 
    {
         int n, compt = 0, som = 0;
         cout << "Entrer des entiers positifs, terminer par 0" << endl;
         for (; ;)
         {
              cout << "\t" << compt + 1 << ":" ;
              cin >> n;
              if (n == 0) break;
              ++compt;
              som += n;
         }
         return 0;
    }
    Il faut que tu enlèves le premier cin >> n car il n'est pas dans la boucle et c'est dans la boucle que tu incrémentes ta somme.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    et pourquoi alors les trois derniers entiers ont été pris en compte ? et si j'enlève le premier cin , avec quoi se fait l'entrée manuelle sur l'écran DOS

  17. #17
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Sinon tu peux essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <iostream>
     
    int main() 
    {
         int n, compt = 0, som = 0;
         cout << "Entrer des entiers positifs, terminer par 0" << endl;
         for (cin >> n; n != 0 ; cin >> n)
         {
              cout << "\t" << compt + 1 << ":" ;
              ++compt;
              som += n;
         }
         return 0;
    }

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 78
    Points : 34
    Points
    34
    Par défaut
    ce qui est important pour moi c'est de comprendre d'abord comment le compil a compris ça , c à d selon quel algorithme il a exécuté ce code , car en lisant le code on s'attend à ce que l'exécution donne une somme 13 ! expliquez moi pourquoi le compil a raté le premier entier 6 ! il ne s'agit pas de me donner des solutions de rechange ! car comprendre une bizarrerie c'est comprendre son compil

  19. #19
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    237
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 237
    Points : 283
    Points
    283
    Par défaut
    Le premier n n'est pas compté car il est remplacé lors de la deuxième extraction (entre tu ne l'a pas ajouté à som)

  20. #20
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Donc entre le premier "cin" et la boucle "for" il faut ajouter:
    pour que ce "cin" serve à quelque chose.
    Formateur expert .Net/C#/WPF/EF Certifié MCP disponible sur Paris, province et pays limitrophes (enseignement en français uniquement).
    Mon blog : pragmateek.com

Discussions similaires

  1. Caracteres accentues s'affichent bizzarement
    Par sekiryou dans le forum Administration système
    Réponses: 3
    Dernier message: 24/03/2008, 12h11
  2. Problème bizzar avec window.open
    Par MANU_2 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/09/2005, 11h42
  3. [LEFT JOIN] Condition de jointure bizzare
    Par Celelibi dans le forum Requêtes
    Réponses: 7
    Dernier message: 17/05/2005, 18h38
  4. [DLL] Exports bizzares
    Par Gogoye dans le forum C++
    Réponses: 6
    Dernier message: 03/03/2005, 14h19
  5. Question facile, erreur bizzare lors d'un Left, Top
    Par SpiderAlpha dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2004, 12h56

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