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 éclairé
    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
    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

  2. #2
    Membre expérimenté
    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
    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 éclairé
    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
    Par défaut
    Merci mais si ca ne te deranges pas, tu pourrais me dire un moyen de remplacer cette ligne?

  4. #4
    Membre expérimenté
    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
    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 éclairé
    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
    Par défaut
    Pourrize-vous me montrer un exemple S.V.P.?

  6. #6
    Membre expérimenté
    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
    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 éclairé
    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
    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.

  8. #8
    Membre expérimenté
    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
    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 éclairé
    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
    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

  10. #10
    Membre éclairé
    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
    Par défaut
    J'ai absolument besoin d'une solution. Je cherche mais je ne trouve pas.
    Pouvez-vous m'aider?

  11. #11
    Expert confirmé 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
    Par défaut
    Bonjour,

    Il faudrait isoler l'instruction qui plante en intercalant des cout avec des Flush à la fin des cout.

  12. #12
    Membre éclairé
    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
    Par défaut
    Si ca ne te derange pas; peux tu me montrer un exmeple. Merci

  13. #13
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 283
    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()

  14. #14
    Membre éclairé
    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
    Par défaut
    Voila c'est tres simple.
    Fichiers attachés Fichiers attachés
    • Type de fichier : txt 3e6.txt (196 octets, 118 affichages)

  15. #15
    Expert confirmé 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
    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".

  16. #16
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 283
    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.

  17. #17
    Membre expérimenté
    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
    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 éclairé
    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
    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?

  19. #19
    Membre expérimenté
    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
    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 éclairé
    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
    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

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, 01h40
  2. Programme qui plante : seg fault
    Par Premium dans le forum C
    Réponses: 10
    Dernier message: 01/12/2006, 16h12
  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, 18h10
  4. Faire un programme qui plante et noter le plantage
    Par cedricgirard dans le forum Langage
    Réponses: 9
    Dernier message: 22/03/2006, 17h36
  5. Programme qui plante
    Par harris_macken dans le forum C++
    Réponses: 1
    Dernier message: 23/05/2005, 00h50

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