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 :

erreur de segmentation


Sujet :

C

  1. #41
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par cyrine Voir le message
    comment extraire 'bonjour les amis' en determinant sa frequence sans avoir à acceder à chaque fois au fichier,
    Tu peux pas. La seule chose que tu peux dire c'est que 'bonjour les amis' est présent au plus 1 fois, mais c'est peut être 0. En fait, chaque nouvelle séquence a une fréquence bornée par le min des deux séquences ayant servies à la construire. Mais ça n'est qu'une borne, et l'occurence effective peut être inférieur!
    Si on revient au pire des cas (parse du fichier systématique), cela veut dire que tu peut arrêter ton parcours dès que tu as atteint cette borne.

  2. #42
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par 3DArchi Voir le message
    Tu peux pas. La seule chose que tu peux dire c'est que 'bonjour les amis' est présent au plus 1 fois, mais c'est peut être 0. En fait, chaque nouvelle séquence a une fréquence bornée par le min des deux séquences ayant servies à la construire. Mais ça n'est qu'une borne, et l'occurence effective peut être inférieur!
    Si on revient au pire des cas (parse du fichier systématique), cela veut dire que tu peut arrêter ton parcours dès que tu as atteint cette borne.
    Ah d'accord, c'est pa préçis alors
    Le jour est le père du labeur et la nuit est la mère des pensées.

  3. #43
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    C'est pour ça que je pense qu'il ne faut pas utiliser les 2seq pour générer les 3seq, mais rechercher directement tous les 3seq dans le fichier.
    Ainsi, on obtient directement leur fréquence une fois le fichier entièrement parsé...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #44
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    C'est pour ça que je pense qu'il ne faut pas utiliser les 2seq pour générer les 3seq, mais rechercher directement tous les 3seq dans le fichier.
    Ainsi, on obtient directement leur fréquence une fois le fichier entièrement parsé...
    c'est a dire extraire les 2seq : les mette dans une table de hachage à part, puis les 3 seq les mettre dans une table de hachage à part , ...
    comme ca?
    et puis pour l'elagage comment faire : se pointer sur 2 table de hachage differents ,?
    c'est ca ton idée Medinoc?
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  5. #45
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    merci Medinoc,
    mais là jai pas réussi à faire generer toutes les sequence de taille >3.
    une idée stp?
    merci
    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
    int main(/*int argc, char *argv[]*/)
    {
    	#if 0
    	ListeMot seq2= { NULL };
    	ListeMot *seq=NULL;
    	int j;
    	int res=0;
    	#endif
     
    	ListeMot *TableHash = CreerTableHachage();
    	if(LireFichierEntree(TableHash)<0)
    		return 1;
     
    	printf("La table de hachage avant le filtrage:\n");
    	dump_table(TableHash);
     
    	printf("Filtrage de la table de hachage...\n");
    	clean_table(TableHash);
    	printf("La table de hachage filtree:\n");
    	dump_table(TableHash);
     
    	/* Test */
    	{
    		ListeMot *TableHashNseq = CreerTableHachage();
    		ListePtrMot *TableSuffixe = NULL;
    		printf("Generation %dseq...\n", 3);
    		GenererTousNSeq(TableHash, TableHashNseq);
    		/*dump_table(TableHash2);*/
    		printf("Inversion...\n");
    		InverserListesCoord(TableHashNseq);
    		printf("Filtrage...\n");
    		dump_table(TableHashNseq);
    		printf("Creation table suffixes...\n");
    		TableSuffixe = CreerTableHashSuffixe(TableHashNseq);
    		dump_table_suffixe(TableSuffixe);
    		printf("Elagage...\n");
    		Elagage(TableHash, TableHashNseq, TableSuffixe);
    		printf("Table elaguee :\n");
    		dump_table(TableHash);
     
    		/* Remplace l'ancienne table */
    		ptr_DetruireTableHachage(TableSuffixe, DetruirePtrMot), TableSuffixe=NULL;
    		DetruireTableHachage(TableHash, DetruireChainon), TableHash=NULL;
    		TableHash = TableHashNseq;
    		TableHashNseq = NULL;
    	}
    	return 0;
    }
    Le jour est le père du labeur et la nuit est la mère des pensées.

  6. #46
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    Comment , on transforme les accolades de test en boucle for?
    j'attends vos reponses.
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  7. #47
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ceci ne suffit-il pas ?
    Code C : 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
    int main(/*int argc, char *argv[]*/)
    {
    	int iSeq;
    	ListeMot *TableHash = CreerTableHachage();
    	if(LireFichierEntree(TableHash)<0)
    		return 1;
     
    	printf("La table de hachage avant le filtrage:\n");
    	dump_table(TableHash);
     
    	printf("Filtrage de la table de hachage...\n");
    	clean_table(TableHash);
    	printf("La table de hachage filtree:\n");
    	dump_table(TableHash);
     
    	/* Test */
    	for(iSeq = 3 ; iSeq<20 ; iSeq++)
    	{
    		ListeMot *TableHashNseq = CreerTableHachage();
    		ListePtrMot *TableSuffixe = NULL;
    		printf("Generation %dseq...\n", iSeq);
    		GenererTousNSeq(TableHash, TableHashNseq);
    		/*dump_table(TableHash2);*/
    		printf("Inversion...\n");
    		InverserListesCoord(TableHashNseq);
    		printf("Filtrage...\n");
    		dump_table(TableHashNseq);
    		printf("Creation table suffixes...\n");
    		TableSuffixe = CreerTableHashSuffixe(TableHashNseq);
    		dump_table_suffixe(TableSuffixe);
    		printf("Elagage...\n");
    		Elagage(TableHash, TableHashNseq, TableSuffixe);
    		printf("Table elaguee :\n");
    		dump_table(TableHash);
     
    		/* Remplace l'ancienne table */
    		ptr_DetruireTableHachage(TableSuffixe, DetruirePtrMot), TableSuffixe=NULL;
    		DetruireTableHachage(TableHash, DetruireChainon), TableHash=NULL;
    		TableHash = TableHashNseq;
    		TableHashNseq = NULL;
    	}
    	return 0;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #48
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    merci Medinoc, mais là il affiche jusqua la liste des 19 sequences !!
    jusquà 6seq tout est nikel , mais pour les autres ( 7seq->19seq) il naffiche rien les table sont vides, ya rien
    voila ce qui est affiché:
    generation 7seq.....
    Invesion....
    Filtrage.....
    Creation table de suffixes....
    Elagage.....
    table elagué.....

    generation 8seq.....
    Invesion....
    Filtrage.....
    Creation table de suffixes....
    Elagage.....
    table elagué.....

    generation 9seq.....
    Invesion....
    Filtrage.....
    Creation table de suffixes....
    Elagage.....
    table elagué.....

    etc...



    generation 19seq.....
    Invesion....
    Filtrage.....
    Creation table de suffixes....
    Elagage.....
    table elagué.....


    voila
    merci infiniment
    Le jour est le père du labeur et la nuit est la mère des pensées.

  9. #49
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Es-tu sûr que ce n'est pas normal ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #50
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Es-tu sûr que ce n'est pas normal ?
    desolé Medinoc, c'est tout à fait normal
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  11. #51
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    Merci MEdinoc
    MAintenant, concernant l'affichage des regles d'association entre les sequences elagues tu pense que c'est mieux de les lires à partir d'un fichier texte ou bien de ma table de hachage sachant qu'il faut calculer leurs support?
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  12. #52
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ça dépend si les tables de hachage peuvent toutes tenir en mémoire à la fois...
    Si elles ne peuvent pas, il peut être plus prudent de les sauvegarder dans un ou des fichier(s) (texte ou binaire, vu que ce seront des fichiers temporaires) pour les consulter à la demande...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #53
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    meri Medinoc,
    un fichier binaire sera de cette forme:,
    sequence frequence
    par exemple :
    bonjour les amis 2
    il fait beau 3

    comme ca?
    Le jour est le père du labeur et la nuit est la mère des pensées.

  14. #54
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour un fichier binaire, il faut mieux que ça.
    Typiquement, taille de la chaîne (pour une lecture plus facile), chaîne (caractère nul compris), fréquence.
    Et on recharge tout ça dans la table de hachage, mais sans les fréquences.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #55
    Débutant 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
    Points : 117
    Points
    117
    Par défaut
    bonjour Medinoc,
    concernant les modif de la frequence, c'est ici qu'on modifie? je vois pas exactement où modifier oula trop du code, je suis perdue ladedans:
    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
    #include "appli.h"
    #include <stddef.h>
    #include <stdlib.h>
    #include <string.h>
    #include <assert.h>
     
    struct st_chainonPtrMot
    {
    	struct st_chainonPtrMot *suivant;
    	ChainonMot const *pcMot;
    };
     
    #define TYPE_CHAINON ChainonPtrMot
    #define NOM_SUIVANT suivant
    #define NOM_FONCTION(x) ptr_ ## x
    #include "chainon.cinc"
    #undef NOM_FONCTION
    #undef NOM_SUIVANT
    #undef TYPE_CHAINON
     
    /* Accesseurs, modifieurs */
    ChainonMot const * GetPtrMot(ChainonPtrMot const *pc)
    {
    	assert(pc!=NULL);
    	return pc->pcMot;
    }
    void SetPtrMot(ChainonPtrMot *p, ChainonMot const *pcMot)
    {
    	assert(p!=NULL);
    	p->pcMot = pcMot;
    }
     
    /*Ctor, Dtor*/
    ChainonPtrMot * CreerPtrMot(void)
    {
    	ChainonPtrMot *nouveau = AllocExit(sizeof *nouveau);
    	assert(nouveau != NULL); /*AllocExit ne retourne jamais NULL.*/
     
    	/* ... */
    	nouveau->suivant = NULL;
     
    	return nouveau;
    }
     
    ChainonPtrMot * CreerPtrMotEx(ChainonMot const *pcMot)
    {
    	ChainonPtrMot *nouveau = CreerPtrMot();
    	SetPtrMot(nouveau, pcMot);
    	return nouveau;
    }
     
    void DetruirePtrMot(ChainonPtrMot *p)
    {
    	if(p!=NULL)
    	{
    		/* ... */
    		free(p);
    	}
    }
     
    /* Extrait la clé de hachage d'un chaînon. */
    unsigned int HachagePtrMot(ChainonPtrMot const *pc)
    {
    	return HachagePartielMotsSuffixe(GetMot(GetPtrMot(pc)));
    }
    merci
    Le jour est le père du labeur et la nuit est la mère des pensées.

  16. #56
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il y a des chances.
    Mais je conseillerais plutôt une fonction CalculerVraieFrequence() dans listeCoord.c, qui prendrait un pointeur de ListeCoord constante en paramètre et retournerait un int...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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