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 :

Rien d'erreur Rien de fichier executable !? (Dev c++)


Sujet :

C++

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Rien d'erreur Rien de fichier executable !? (Dev c++)
    Mon code source quand je le compile ,je ne trouve aucun erreur mais il ne s'exécute pas je ne sais pas pourquoi??!
    Voila le code source :
    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
    #include <malloc.h>
    #include<conio.h>
    #include <stdio.h>
    using namespace std;
    typedef struct noeud 
    {
       int valeur ; 
       noeud *fg,*fd;     
     
            } *arbre;
    arbre na(int val,arbre fg,arbre fd)
    {
     arbre c; 
     c = (arbre) malloc(sizeof(noeud));
     c->valeur = val; 
     c->fg = fg;
     c->fd = fd;
     return c;
          }
     
     
    class file {
     
       int tete;
       int queue; 
       arbre F[100] ;
      public : 
    file()
    {
          tete=0;
          queue=0;
          };
     
     
       bool FILEVIDE()
       {
          if (F[tete] == NULL)
          {
             return true ;         
                      } 
           else 
           {
              return false ;              
                          }     
     
            }
     
       void INSERTION(arbre x)
      { 
     
           if ((!FILEVIDE())&& (queue==tete) )
           {
           printf("%d","Erreur : débordement positif")  ;  
     
           }else 
           {
               F[queue]=x;
               queue=(queue+1)% 100;    
                 }
      }     
      arbre SUPPRESSION()
      {
        if (FILEVIDE()) 
           {
              printf("%d","Erreur : débordement négatif")  ;        
                            }
           else 
           {
              arbre temp;
              temp=F[tete];
              tete=(tete+1)% 100;
              return temp  ;
     
                }
      }
     
     
    };
    void parcours(arbre r)
    {
       arbre u; 
       file f;
       if (r!= NULL)
       {
               f.INSERTION(r);
               while(!f.FILEVIDE())
               {              
                  u = f.SUPPRESSION() ; 
                  printf("%d ",u->valeur);
                  f.INSERTION(u->fg);
                  f.INSERTION(u->fd) ;    
     
     }
     
        }  
     
         }
    int main ()
    { 
    arbre racine = na(10,na(4,na(2,NULL,NULL),na(6,NULL,NULL)),na(14,NULL,NULL)); 
    parcours(racine);
    getch();   
    return 0;    
        }
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    P'tèt parce que ton code est mal, très mal, indenté ... En plus mixer ainsi du C et du C++ c'est vraiment pas une bonne idée - soit tu utilises le C (syntaxe C, bibliothèques C), soit tu utilises le C++ (syntaxe C++, bibliothèques C++). Après avoir corrigé ces quelque points, on pourra ensemble corriger ton programme. Avant, c'est vraiment pas faisable.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    qu'est-ce qui vous dérange exactement dans le code source ?

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Melem
    ton code est mal, très mal, indenté ... En plus mixer ainsi du C et du C++ c'est vraiment pas une bonne idée - soit tu utilises le C (syntaxe C, bibliothèques C), soit tu utilises le C++ (syntaxe C++, bibliothèques C++).
    Tu peux poser des questions s'il y a quelque chose que tu ne comprends pas.

  5. #5
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Le code un petit peu retouché :
    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
    #include <malloc.h>
    #include <stdio.h>
    using namespace std;
    typedef struct noeud 
    {
      int valeur ; 
      noeud *fg,*fd;     
     
    } *arbre;
     
    arbre na(int val,arbre fg,arbre fd)
    {
      arbre c; 
      c = (arbre) malloc(sizeof(noeud));
      c->valeur = val; 
      c->fg = fg;
      c->fd = fd;
      return c;
    }
     
     
    class file {
     
      int tete;
      int queue; 
      arbre F[100] ;
     public : 
      file()
      {
        tete=0;
        queue=0;
      };
     
     
      bool FILEVIDE()
      {
        if (F[tete] == NULL)
        {
          return true ;         
        } 
        else 
        {
          return false ;              
        }     
     
      }
     
      void INSERTION(arbre x)
      { 
     
        if ((!FILEVIDE())&& (queue==tete) )
        {
          printf("Erreur : débordement positif\n")  ;  
     
        }else 
        {
          F[queue]=x;
          queue=(queue+1)% 100;    
        }
      }     
      arbre SUPPRESSION()
      {
        if (FILEVIDE()) 
        {
          printf("Erreur : débordement négatif\n")  ;
          return NULL;
        }
        else 
        {
          arbre temp;
          temp=F[tete];
          tete=(tete+1)% 100;
          return temp  ;
     
        }
      }
     
     
    };
    void parcours(arbre r)
    {
      arbre u; 
      file f;
      if (r!= NULL)
      {
        f.INSERTION(r);
        while(!f.FILEVIDE())
        {              
          u = f.SUPPRESSION() ;
     
          if (u != NULL) {
            printf("%d ",u->valeur);
            f.INSERTION(u->fg);
            f.INSERTION(u->fd) ;
          }
        }
     
      }  
     
    }
    int main ()
    { 
      arbre racine = na(10,na(4,na(2,NULL,NULL),na(6,NULL,NULL)),na(14,NULL,NULL)); 
      parcours(racine);
      return 0;    
    }
    Compilation/exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    vagabond@ubuntu-box ~ $ g++ -g -w -Wall -ansi -pedantic -o test test.c
    vagabond@ubuntu-box ~ $ ./test 
    10 Erreur : débordement positif
    Erreur : débordement positif
    14691010 Erreur : débordement positif
    0 Erreur : débordement positif
    -462045051 Erreur : débordement positif
    0 Erreur : débordement positif
    1651341683 Erreur : débordement positif
    0 Erreur : débordement positif
    Erreur de segmentation
    Erreur de segmentation => tentative d'accès à une zone mémoire non valide

    On regarde ce que ça donne au debugger :
    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
    vagabond@ubuntu-box ~ $ gdb test
    GNU gdb (GDB) 7.0-ubuntu
    Copyright (C) 2009 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "i486-linux-gnu".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /home/vagabond/test...done.
    (gdb) r
    Starting program: /home/vagabond/test 
    10 Erreur : débordement positif
    Erreur : débordement positif
    14445250 Erreur : débordement positif
    0 Erreur : débordement positif
    -462045051 Erreur : débordement positif
    0 Erreur : débordement positif
    1651341683 Erreur : débordement positif
    0 Erreur : débordement positif
     
    Program received signal SIGSEGV, Segmentation fault.
    0x080485ba in parcours (r=0x804b048) at test.c:92
    92	        printf("%d ",u->valeur);
    Current language:  auto
    The current source language is "auto; currently c++".
    L'erreur se situe au niveau de la lecture du champ "valeur" de u.
    On essaye de lire la valeur dans le debugger :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (gdb) p u->valeur
    Cannot access memory at address 0x1d
    C'est bien un problème de pointeur invalide.

    Le pointeur "u" est renvoyé par la méthode "SUPRESSION" de la classe "file" et correspond à F[tete], cela signifie que soit tu insères une mauvaise valeur dans ta file, soit tu lis un emplacement du tableau qui ne contient rien.
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Comment on peut corriger cette erreur ?

  7. #7
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Tu peux afficher les indices de F dans lesquels tu écris, puis ceux dans lesquels tu lis, histoire de voir à quel moment tu essayes de lire un élément du tableau qui ne correspond pas à une valeur que tu as mises dedans.
    "Je suis incapable d'expliquer ce qui se passa ensuite : je lâchai quelque chose, quelque chose à quoi je m'agrippais depuis toujours sans m'en rendre compte. Je m'enfonçais dans une obscurité chaude, moelleuse et protectrice, tandis qu'un loup montait la garde par mes propres yeux."

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/08/2011, 15h59
  2. Erreur lors de l'execution de mon fichier SQL
    Par silverfab34 dans le forum Unix
    Réponses: 4
    Dernier message: 05/04/2011, 12h32
  3. Erreur de Construction d'un fichier executable
    Par Kartoon67 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 04/06/2009, 15h34
  4. [FLASH MX2004] Rien ne se passe qd j'execute mon code
    Par adilou1981 dans le forum Flash
    Réponses: 2
    Dernier message: 27/07/2005, 23h31
  5. Réponses: 15
    Dernier message: 05/03/2005, 14h53

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