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 :

Problème d'exécution


Sujet :

C

  1. #1
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut Problème d'exécution
    Bonjour,
    jai un probleme au niveau de mon programme.
    quand je fais le run il maffiche aucune erreur, mais la fenetre d'execution s'ouvre et se ferme rapidement: c'est à dire qu'il ya un probleme
    bonvoila les 2 fonction





    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
    int main(void)
    {
     
      // Declaration des variables 
     int a;
      FILE *F;              // Descripteur du fichier texte
      char mot[100];        // variable utilisée pour stocker le mot en cours de lecture
      int i;                // variable utilisée lors du parcours de la TableHash
      unsigned int cle,pt;  // variables pour stocker les cles du mot en cours et la clé du caractère '.'
      char *temp;		// variable pour stocker le mot en cours de lecture
      char c;               // ??
      Liste **TableHash;    // tableau de liste
      TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *)); // allocation en memoire du tableau
     
    	  elaguer2seq(&seq);
    	  //printf("%i", a);
      }
      //}
      else printf("Le fichier texte n'existe pas");
     scanf ("%c", c);
      return 0;
     
    }
     
     
     
     
    void elaguer2seq(Liste **seq){
         Liste **tablehach;
         Liste *p;
         Liste *q;
         Liste *L;
         for(p=tablehach[0]; p!=NULL; p=p->suivant){
          for (q=L; q!=NULL; q=q->suivant){
              printf("%s",*p);
     
         }
         }
         }

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Le code fournie ne compile pas (il manque les headers, il y a un else sans le if, etc.)

    Sinon, le scanf() est faux (et cela t'avait déjà été signale dans un autre sujet), il faut fournir des adresses et non des valeurs soit scanf("%c", &c) et getchar() fonctionne tout aussi bien en étant plus simple.

    Dans elaguer2seq(), tu utilises tablehach[0] alors que ni tablehach[0] ni même tablehach ne sont allouer.

  3. #3
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Citation Envoyé par gl Voir le message
    Le code fournie ne compile pas (il manque les headers, il y a un else sans le if, etc.)

    Sinon, le scanf() est faux (et cela t'avait déjà été signale dans un autre sujet), il faut fournir des adresses et non des valeurs soit scanf("%c", &c) et getchar() fonctionne tout aussi bien en étant plus simple.

    Dans elaguer2seq(), tu utilises tablehach[0] alors que ni tablehach[0] ni même tablehach ne sont allouer.
    mais le tablhash est alloué dans le main; dans la partie declaration!!
    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
    int main(void)
    {
     
      // Declaration des variables 
     int a;
      FILE *F;              // Descripteur du fichier texte
      char mot[100];        // variable utilisée pour stocker le mot en cours de lecture
      int i;                // variable utilisée lors du parcours de la TableHash
      unsigned int cle,pt;  // variables pour stocker les cles du mot en cours et la clé du caractère '.'
      char *temp;		// variable pour stocker le mot en cours de lecture
      char c;               // ??
      Liste **TableHash;    // tableau de liste
      TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *)); // allocation en memoire du tableau
      for(i=0;i<TAILLEHASH;++i) //  Initialisation des
        TableHash[i] = NULL;    //  pointeurs contenus dans le tablea

  4. #4
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    jai un probleme au niveau de mon programme.
    quand je fais le run il maffiche aucune erreur, mais la fenetre d'execution s'ouvre et se ferme rapidement: c'est à dire qu'il ya un probleme
    Tu ne l'executerais pas depuis l'explorateur de fichiers de Windows des fois ?

  5. #5
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Tu ne l'executerais pas depuis l'explorateur de fichiers de Windows des fois ?
    Merci Lucien, mais j'ai un probleme au niveau de la fonction "elaguer2seq", car quand je la supprime, le programme fonctionne nikel, ou bien ai niveau de son appel

  6. #6
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    j'ai un probleme au niveau de la fonction "elaguer2seq"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         Liste *q;
         Liste *L;
         // ......
         for (q=L; q!=NULL; q=q->suivant)
    Tu compte aller loin avec deux pointeurs non initialisé ?

    Pour l'appel de ta fonction, tu l'appelle avec une variable nommé seq que je ne vois nul part ???

    Je pense qu'il va falloir que tu revois les bases du langage C !!!

  7. #7
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         Liste *q;
         Liste *L;
         // ......
         for (q=L; q!=NULL; q=q->suivant)
    Tu compte aller loin avec deux pointeurs non initialisé ?

    Pour l'appel de ta fonction, tu l'appelle avec une variable nommé seq que je ne vois nul part ???

    Je pense qu'il va falloir que tu revois les bases du langage C !!!
    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
    void elaguer2seq(Liste *L){
      Liste *p;
      Liste *q;
      char *mot;
      Liste *TableHash;
      for(p=L;p!=NULL;p=p->suivant){
     
          for(q= TableHash ;q!=NULL;q=q->suivant){    
                 printf ("%s", p->mot);
     
                 }                    
      }
    }
     
    int main(void)
    {
     
      // Declaration des variables 
     int a;
      FILE *F;              // Descripteur du fichier texte
      char mot[100];        // variable utilisée pour stocker le mot en cours de lecture
      int i;                // variable utilisée lors du parcours de la TableHash
      unsigned int cle,pt;  // variables pour stocker les cles du mot en cours et la clé du caractère '.'
      char *temp;		// variable pour stocker le mot en cours de lecture
      char c;               // ??
      Liste **TableHash;    // tableau de liste
      TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *)); // allocation en memoire du tableau
      for(i=0;i<TAILLEHASH;++i) //  Initialisation des
        TableHash[i] = NULL;    //  pointeurs contenus dans le tableau 
     
      pt=hash_cle(".");     // calcul de la cle equivalent à un point
     
      printf("debut du programme \n----------------------------------\n");  
      F=fopen("C:\\Documents and Settings\\siril\\Bureau\\posmot\\essai.txt","r");  // ouverture du fichier texte
      if(F!= NULL)      // si le fichier existe
      {
      	  while(fscanf(F,"%s",mot)==1)     // boucle de lecture du fichier
     	  {
    		  temp = (char*)mot;       // recuperation du mot lu 
    	          cle = hash_cle(temp);    // calcul de la cle equivalente
    		  if ( (cle!=pt ) && (!ChercherMotDansTableHash(TableHash,temp))) // si le mot n'est pas un point et qu'il n'est pas deja stocke
    		  	TableHash[cle] = InsertionEnTete(TableHash[cle],temp);    // on l'insere en debut du tableau
    	  }
    	  fclose(F );  // on ferme le descripteur de fichier
    	  F=fopen("C:\\Documents and Settings\\siril\\Bureau\\posmot\\essai.txt","r");  // on rouvre le descripteur de fichier pour revenir au debut
    	  PosLigne(F,TableHash); // recherche des coordonnées des diferents mots extraits
              fclose(F );  // on ferme le descripteur de fichier
     
    	  //filtrage 
    	  printf("\nla liste non filtree :\n----------------------------------\n");
    	  AfficherTableHash(TableHash); // affichage de la table NON FILTREE
     
    	  printf("\nla liste filtree (2 occurrences au moins) :\n----------------------------------\n");
    	  FiltreListe(TableHash,2);	// filtrage de la table
    	  AfficherTableHash(TableHash); // affichage de la table FILTREE
     
    	  //géneration des 2seq
    	  Liste *seq=NULL;
    	  Generer2seq(TableHash, 2, &seq);
    	  printf("\nla liste des 2seq :\n----------------------------------\n");
    	  AfficherListe(seq);
    	  //printf("Chercher mot : ");
    	  //scanf("%s",mot);
    	  //if(cle = ChercherMotDansTableHash(TableHash,mot))
    	  //  printf("%s existant dans le conteneur %u\n",mot,hash_cle(mot));
    	  //else
    	  //  printf("%s inexistant dans la table de hash\n");
    	  //scanf("%c",c);
     
    	  //  elagage des séquence
     
     
    	  elaguer2seq(seq);
    	  //printf("%i", a);
      }
      //}
      else printf("Le fichier texte n'existe pas");
     system("pause");
     
      return 0;
     
    }

    comme ça c'est faux ?!!!!!

  8. #8
    Membre émérite
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Liste *TableHash;
    //...
    for(q= TableHash ;q!=NULL;q=q->suivant){
    Ça c'est encore un pointeur non initialisé ?
    Tu n'as rien compris au pointeur. il faut revoir tes cours sur les pointeurs.

  9. #9
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par cyrine Voir le message
    mais le tablhash est alloué dans le main; dans la partie declaration!!
    La variable TableHash locale a la fonction main oui, pas la variable locale a la fonction TableHash.
    Ce n'est pas en donnant le meme nom a deux variables differentes que ces deux variables vont devenir une seule et meme variable.

    En outre, comme le fait remarquer Lucien63 tu as un nombre important de pointeur non intialise, ce qui va fatalement provoque des oucis.

    Avant de tenter de faire des programmes aussi "avance", je pense qu'il serait preferable de reprendre les bases du C (entre autre les pointeurs, les passages par parametre et les portees des variables).

  10. #10
    Membre éclairé Avatar de étoile de mer
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    978
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 978
    Par défaut
    Citation Envoyé par gl Voir le message
    Citation Envoyé par cyrine Voir le message
    mais le tablhash est alloué dans le main; dans la partie declaration!!
    La variable TableHash locale a la fonction main oui, pas la variable locale a la fonction TableHash.
    Ce n'est pas en donnant le meme nom a deux variables differentes que ces deux variables vont devenir une seule et meme variable.

    En outre, comme le fait remarquer Lucien63 tu as un nombre important de pointeur non intialise, ce qui va fatalement provoque des oucis.

    Avant de tenter de faire des programmes aussi "avance", je pense qu'il serait preferable de reprendre les bases du C (entre autre les pointeurs, les passages par parametre et les portees des variables).
    merci pour vos advices

Discussions similaires

  1. Problème d'exécution avec Dec C++
    Par PNL dans le forum C
    Réponses: 20
    Dernier message: 02/10/2005, 03h59
  2. Problème pour exécuter une chaîne de caractères
    Par Pongo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 10h34
  3. Problème d'exécution : 'rtl60.bpl introuvable'
    Par zeddy23 dans le forum EDI
    Réponses: 3
    Dernier message: 27/07/2005, 20h44
  4. Réponses: 5
    Dernier message: 19/04/2005, 08h50
  5. Problème à l'exécution avec wxWindows (compilé avec BCC55)
    Par ShootDX dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 14/11/2003, 18h04

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