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 :

programme qui plante


Sujet :

C++

  1. #1
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut programme qui plante
    Bonjour a tous ! Dans le cadre de la musique, j'ai fait un programme qui permet
    d'interroger un eleve au hasard a partir d'une classe precedemment créée.
    (un fichier txt portant le nom de la classe)
    Pourriez-vous m'indiquer pourquoi un message d'erreur signalant que le programme a rencontre une ereur et doit fermé s'affiche lorsque je veux interroger un eleve. De plus, pourriez-vous m'indiquer les changements a faire.
    Merci pour votre aide.
    Fichiers attachés Fichiers attachés
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  2. #2
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    je tente ma chance avec la ligne 98.

    puis, tu peux remplacer tous les char[] par des std::string
    (virer les strcat, et autres)

  3. #3
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Merci mais si ca ne te deranges pas, tu pourrais me dire un moyen de remplacer cette ligne?
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  4. #4
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Tu devrais vérifier les valeurs que te retourne la fonction choixeleve (dans ra)
    par rapport à la taille de ton vector d'éléve (lignes)

    Indice : les std::vector sont indicé (comme les tableaux) à partir de 0

  5. #5
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Pourrize-vous me montrer un exemple S.V.P.?
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  6. #6
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    après ta ligne : const int ra = ....
    ajoute pour voir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout << (ra == lignes.size() ? "indice trop grand je vais planter" : "" ) << endl;

  7. #7
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Je suis desole mais meme en rajoutant ce code, ca continu de plantanter
    Ca affiche :" l'eleve interroge est" et puis ca plante. Pourriez-vous trouver une autre solution.
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  8. #8
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Le but n'était pas de corriger ton problème mais que tu puisses trouver d'où il vient.

    Continue à ajouter des traces.
    Ton problème vien (sûrement) de ton indice sur le vector.
    Affiche ra, et lignes.size()

    Réfléchis à ce que doit faire la fonction choixeleve par rapport à son utilisation pour l'indice du vector ( un nombre de 1 à ... pour un tableau indicié à partir de 0)

  9. #9
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Je ne vois vraiment pas d'ou vient le probleme. Quelqu'un pourrait m'aider S.V.P.
    car je suis perdu. Merci pour votre aide
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  10. #10
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    J'ai absolument besoin d'une solution. Je cherche mais je ne trouve pas.
    Pouvez-vous m'aider?
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  11. #11
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Il faudrait isoler l'instruction qui plante en intercalant des cout avec des Flush à la fin des cout.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  12. #12
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Si ca ne te derange pas; peux tu me montrer un exmeple. Merci
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  13. #13
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    pourrais-tu nous fournir un exemple de fichier "classe" histoire de tester stp?

    Sinon, je me demande bien ce qu'est ce std::count()
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  14. #14
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Voila c'est tres simple.
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt 3e6.txt (196 octets, 109 affichages)
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  15. #15
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    cout<< "$1 " << flush ;
    instruct1 ;
    cout<< "$2 " << flush ;
    instruct2 ;
    cout<< "$3 " << flush ;
    instruct3
    cout<< "$4 " << flush ;
    instruct4
    ...
    Si c'est instruct3 qui plante, on verra "$1 $2 $3".
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  16. #16
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Bon déjà, le code que tu as mis en pj dans ton premier post ne compile pas, il faut inclure <algorithm>.

    Ensuite, j'ai testé de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << "l'élève interroge est" << lignes[ra] << "\n";
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::cout << "l'élève interroge est" << lignes[0] << "\n";
    (0 à la place de ra), et ça plante quand même. Ce qui signifie que c'est ton tableau (lignes) qui est mal rempli.
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  17. #17
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Damn, j'aurais du mettre ça pour que ce soit encore plus clair...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout << (ra >= lignes.size() ? "indice trop grand je vais planter" : "" ) << endl;
    au lieu du ==

  18. #18
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Meme avec vos solutions, ca ne marche pas. Pourtant lorsque j'affiche ra, c'est un nombre compris entre 0 et lines - 1. Je ne comprend vraiment pas.
    Auriez-vous d'autres solutions?
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  19. #19
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Tu veux dire que tu as vérifier et ton vector lignes n'est pas vide ?
    Sinon, l'indice que je te donnais reste toujours bon.
    la fonction choixeleve renvoie un nombre entre 1 et nombre de lignes
    alors qu'il faudrait 0 et nombres de lignes - 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    try {
    int s = 1;
    const int ra = choixeleve(s, lines);
    std::cout << ( lignes.empty() ? "Je suis vide, je vais planter.\n" : "" );
    std::cout << "l'élève interroge est" << lignes.at(ra) << "\n";
    } catch( const exception& e ) {cout << e.what() << endl;}
    (edit : ajout de } fermante )

  20. #20
    Membre actif
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Points : 204
    Points
    204
    Par défaut
    Merci mais il y a juste un probleme. Lorsque je compile tout le programme avec
    le nouveau code, voici les messages d'erreurs qui apparaissent :
    Fichiers attachés Fichiers attachés
    L'exces en tout est la ruine de l'homme "Alexandre"
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

Discussions similaires

  1. Programme qui plante quand je passe une string.
    Par z980x dans le forum SL & STL
    Réponses: 4
    Dernier message: 23/01/2009, 00h40
  2. Programme qui plante : seg fault
    Par Premium dans le forum C
    Réponses: 10
    Dernier message: 01/12/2006, 15h12
  3. programme qui plante. chercher/remplacer dans des fichiers.
    Par [Hugo] dans le forum Général Python
    Réponses: 2
    Dernier message: 31/10/2006, 17h10
  4. Faire un programme qui plante et noter le plantage
    Par cedricgirard dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 16h36
  5. Programme qui plante
    Par harris_macken dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2005, 23h50

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