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

Langage C++ Discussion :

(macosx,netbeans) erreur à l'execution(segmentation fault)


Sujet :

Langage C++

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut (macosx,netbeans) erreur à l'execution(segmentation fault)
    salut,

    bonne année 2010!

    pour commencer studieusement, voici une petite erreur que je n'arrive pas à résoudre:

    il s'agit d'un exercice où il faut créer un programme qui fait office de carnet d'adresses, c'est très simple.

    voici le 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
    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
     
    /* 
     * File:   main.cpp
     * Author: lolveley
     *
     * Created on 31 décembre 2009, 09:12
     */
     
    #include <stdlib.h>
    #include <iostream>
    using namespace std;
     
    class information{
    public:
        string nom;
        string prenom;
        string adresse;
        string telephone;
     
        information();
        information(string nom,string prenom,string adresse,string telephone);
     
    };
     
    class carnet{
    public:
        information valeurs[25][10];
        int indexNouvelleValeur[25];
        void add(information inf);
        carnet();
     
     
    };
     
    information::information(){
        nom="";
        prenom="";
        adresse="";
        telephone="";
     
     
    }
     
    information::information(string nom, string prenom, string adresse, string telephone){
     
        nom=nom;
        prenom=prenom;
        adresse=adresse;
        telephone=telephone;
     
     
    }
     
     
     
    void carnet::add(information inf){
     
        if ( (inf.nom[0]-65<0) || (inf.nom[0]-65>=26) )
            return;
        //nom commence par une majuscule
     
        if (indexNouvelleValeur[inf.nom[0]-65]>=10)
                return;
        //il reste de la place dans le carnet
     
        int lettre=inf.nom[0]-65;
        valeurs[lettre][indexNouvelleValeur[lettre]].adresse=inf.adresse;
        valeurs[lettre][indexNouvelleValeur[lettre]].nom=inf.nom;
        valeurs[lettre][indexNouvelleValeur[lettre]].prenom=inf.prenom;
        valeurs[lettre][indexNouvelleValeur[lettre]].telephone=inf.telephone;
        indexNouvelleValeur[lettre]++;
     
    }
     
     
    carnet::carnet(){
     
        for (int i=0;i<26;i++){
            indexNouvelleValeur[i]=0;
            for (int j=0;j<10;j++){
                valeurs[i][indexNouvelleValeur[i]].adresse="";
                valeurs[i][indexNouvelleValeur[i]].nom="";
                valeurs[i][indexNouvelleValeur[i]].prenom="";
                valeurs[i][indexNouvelleValeur[i]].telephone="";
     
     
            }
        }
     
    }
     
     
     
     
     
     
    /*
     * 
     */
    int main(int argc, char** argv) {
     
        carnet a;
        /*information b();
        b.adresse="12_rue_des_roses";
        b.nom="String";
        b.prenom="jean";
        b.telephone="0387125696";
        */
        information b("String","jean","12_rue_des_roses","03873156963");
     
        a.add(b);
     
     
        return (EXIT_SUCCESS);
    }
    et voici l'erreur, dans netbeans:
    elle s'affiche dans la console, à l'exécution (la compil marche bien):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /Applications/NetBeans/NetBeans 6.7.1.app/Contents/Resources/NetBeans/dlight1/bin/nativeexecution/dorun.sh: line 51:  4329 Segmentation fault      /bin/sh "${PIDFILE}.sh"
    Press [Enter] to close the terminal ...

    merci,

    olivier.

  2. #2
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Salut,

    Tu as créé un tableau de 25x10 elements mais tu intialises 26x10 elements dans le constructeur suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        for (int i=0;i<26;i++){
            indexNouvelleValeur[i]=0;
            for (int j=0;j<10;j++){
    ...
    (remplace 26 par 25)

    Utilise ton débugger pour voir la cause de tes futures plantages. Il faut apprendre à l'utiliser, parce que ce ne sera pas ton dernier plantage, tu en auras plein d'autre.

    De maniére général je n'ai pas regardé ton code en détail, mais utiliser des tableau pret dimensionné pour faire un carnet d'adresse ne semble pas trés adapté. Regarde, si tu as un moment su coté des vector ou des lists

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    oui, c'était ça qui plantait.

    merci!

    olivier.

Discussions similaires

  1. erreurs de compilation + segmentation fault
    Par gbauby dans le forum Débuter
    Réponses: 11
    Dernier message: 25/04/2012, 21h52
  2. une erreur du type Segmentation fault
    Par bae84 dans le forum Débuter
    Réponses: 8
    Dernier message: 16/12/2011, 16h34
  3. probleme d'execution :segmentation fault
    Par chochatown dans le forum C++
    Réponses: 1
    Dernier message: 11/06/2009, 19h43
  4. Réponses: 2
    Dernier message: 15/01/2008, 12h09
  5. [ERREUR D'EXECUTION] Segmentation Fault
    Par CestPasMoi dans le forum C++
    Réponses: 3
    Dernier message: 26/11/2005, 17h38

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