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 :

Analyse syntaxique polynome


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 15
    Points
    15
    Par défaut Analyse syntaxique polynome
    Bonjour,

    J'essaie de faire une fonction qui fait l'analyse syntaxique d'un polynome entré par un utilisateur qui doit obligatoirement être de la forme (+ou-)ax^k+...

    Exemple +2x^2-4x^3.

    Mon programme récupère l'exposant et le coeeficient et le met dans un autre tableau ou les indices correspondent aux exposants.

    Sauf que mon programme plante et je ne vois pas du tout ou est l'érreur.
    Le voila :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>
    #define TRUE 1
    #define FALSE 0
     
    int verifier_poly(char *tab);
     
     
    int tab_coef[40]={0};
     
    int main()
    {
        printf("Entrer votre polynome\n");
        char tab[40];
        scanf("%s",tab);
        printf("Taille chaine %d", strlen(tab));
        if(verifier_poly(tab)==TRUE)
        {
            printf("BOn\n");
        }
        else
        {
            printf("Faux\n");
        }
        return 0;
    }
     
     
     
     
    int verifier_poly(char *tab)
    {
     
     
    	if( tab[0]=='+' || tab[0]=='-' && isdigit( atoi(tab[1]) ) && tab[2]=='x' && tab[3]=='^' && isdigit( atoi(tab[4]) ) && atoi(tab[4])>=0 )
    	{
     
     
            if(tab[0]=='-')
            {
                tab_coef[atoi(tab[4])]=tab_coef[atoi(tab[4])] - atoi(tab[1]);
            }
            else
            {
                tab_coef[atoi(tab[4])]=tab_coef[atoi(tab[4])]+ atoi(tab[1]);
            }
     
     
             verifier_poly(tab+5);
     
     
    	}
    	else if(tab[0]=='\0')
    	{
    		return TRUE;
    	}
     
    	else
    	{
    		return FALSE;
    	}
     
     
    }

    Merci d'avance

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 22
    Points : 22
    Points
    22
    Par défaut
    Ton programme segfault parce que tu passe des char a atoi alors qu'elle attend des char *

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           int atoi(const char *nptr);
    Essaye de remplacer tous tes atoi(tab(X)) par atoi(&(tab(X)))Je garantit pas que ton programme fonctionnera après ça, mais ça fera déjà une erreur de corrigée.

  3. #3
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 39
    Points : 59
    Points
    59
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int[] entrerpolynome () {
    println(degré max);
    system("PAUSE"); 
    strUser = InputBox("DEGRE_MAX");
    {
      int i;
      for (i = 0; i <= DEGRE_MAX; i++)
    println(valeur[i]);
    system("PAUSE"); 
    strUser = InputBox("source[i]");
        entrerpolynome[i] = source[i];}
    return  entrerpolynome[i] ;
    }

Discussions similaires

  1. analyse syntaxique et evaluation
    Par wonderx dans le forum Caml
    Réponses: 10
    Dernier message: 10/02/2009, 23h20
  2. Réponses: 1
    Dernier message: 13/09/2007, 14h03
  3. Analyse syntaxique parametrable
    Par zitoune92 dans le forum Delphi
    Réponses: 2
    Dernier message: 12/04/2007, 14h30
  4. Réponses: 2
    Dernier message: 28/12/2006, 11h31
  5. Réponses: 6
    Dernier message: 07/03/2005, 13h45

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