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 :

Reconnaissance d'un mot par un automate déterministe


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    .
    Inscrit en
    Mai 2012
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mai 2012
    Messages : 120
    Par défaut Reconnaissance d'un mot par un automate déterministe
    Bonjour à tous

    SVP aidez moi j'ai un mini projet en compilation qui nous demande -d'implémenter la structure de l'automate en mémoire
    -afficher l'automate
    -reconnaissance de mot
    .....

    programmé en c
    mon code marche à merveille cependant quand à la reconnaissance d'un mot ma fonction que voici
    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
    int accept(afd *M,char*word)
    {
        int car_courant=0;
        int eta_courant;
        int i;
        eta_courant = M->eta_ini;
     
        while((word[car_courant]!='\0'))
        {
     
         eta_courant=transitions(M,eta_courant,word[car_courant]);
         if(eta_courant==1)
         {
             return eta_courant;
             for(i=0;i<(M->nb_eta_fin);i++)
             {
                 if(eta_courant==M->eta_fin[i])
                 return 1;
             }
             return 0;
         }
         else
         car_courant++;
         return eta_courant;
        }
    return 0;
     
    }
    ne joue pas sa fonction
    l'erreur qui apparait lors de l'exécution de cette fonction est "segmentation fault"
    espérant être précis dans mes dires j'attends impatiemment vos coups de pouce
    merci d'avance

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonsoir,

    avec ce que tu donnes c'est difficile de savoirr exactement pourquoi il y a un segfault. En général ça signifie que tut apes dans de la mémoire non allouée donc voir si M et word sont correctement alloués sera certainement la première chose à vérifier quand tu auras lancé le debugger ...

    Sinon ta fonction me semble curieuse avec ses return partout ... si word n'est pas une chaine vide tu appelles transitions puis tu renvoies eta_courant (en particulier la boucle for n'est jamais exécutée) ; si word est la chaine vide alors tu renvoies 0.
    L'algorithme est à revoir je pense.

  3. #3
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    J'ai l'impression que tu n'as pas compris ce qu'est un return.

    Un return arrète la fonction et définit la valeur de l'appel ayant entrainé son évaluation.

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Bonjour,

    Un segmentation fault ce passe quand tu lit dans une partie de la mémoire qui ne t'appartient pas.
    Donc la question est pointeur != null ou pointeur bien initialisé je pense que tes paramètres sont pourries.

    Ensuite tu fait un tour de boucle et tu sort donc ta boucle ne sert a rien.
    Bonne journée.

Discussions similaires

  1. pb de reconnaissance de base access par excel
    Par xycoco dans le forum Access
    Réponses: 1
    Dernier message: 02/02/2006, 20h19
  2. Remplacement d'un mot par un arbre
    Par Gryzzly dans le forum C
    Réponses: 13
    Dernier message: 31/12/2005, 10h44
  3. Lancement d'un programme par un automate
    Par Delphi-ne dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 11/11/2005, 15h27
  4. Lecture d'un fichier mot par mot
    Par hamster dans le forum C++
    Réponses: 7
    Dernier message: 21/02/2005, 17h25

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