Polynôme

Fermé
pyn Messages postés 6 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 19 janvier 2011 - 9 janv. 2011 à 23:18
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 10 janv. 2011 à 00:59
Bonjour,
Je suis totalement bloquer sur un programme de manipulation de polynome (à coef dans Q)
exemple : -4/5 + 3x^9 +7/2x^15-x^18
Plutôt que bloquer on peut plutôt dire que je n'arrive pas à démarrer, vu que je bloque sur la saisie du polynome.

Le problème vient de la méthode qui est imposé :
le polynome doit être un tableau de monome de la forme
typedef mon {
int degre, num, den;
}Monome;

typedef struct poly {
Monome monome[MAX];
int nbmo;
} Polynome;

#include <stdio.h>
#include <stdlib.h>
#include "poly.h"

int main()
{
Polynome polynome;
char chaine[100];
char* temp;
int i, j, cas;

printf("Saisissez votre pôlynome :\n");
scanf("%s",chaine);
*temp = chaine[0];
for (j=0; *temp!='\0'; j++)
{
    cas=0;
    for (i=1; *temp!='+' && *temp!='\0'; i++)
    {
        if (*temp=='x')
        {
            *temp=chaine[i];
            continue;
        }
        if (*temp=='/')
        {
            cas=cas+1;
            *temp=chaine[i];
            continue;
        }
        if (*temp=='^')
        {
            cas=cas+2;
            *temp=chaine[i];
            continue;
        }
        if (cas==0)
            polynome.monome[j].num =atoi(*temp);
        else if (cas==1)
            polynome.monome[j].den =atoi(*temp);
        else if (cas==2)
            polynome.monome[j].degre =atoi(*temp);
        *temp=chaine[i];
    }
}


}


Mais il reste plusieurs problèmes :
Après avoir tapé un polynome j'ai une erreur comme quoi la mémoire ne peut être en état "read"
Cette erreur disparait en enlevant atoi mais je me retrouve avec un char, pas très pratique pour calculer dérivé, primitive....par la suite.

Ensuite si l'on tape 44x^5 par exemple le deuxième 4 va écraser le premier dans le num, je ne vois pas comment corriger sa.
Idem si l'on rentre 5x^4-7x^5, il va y avoir un problème avec le "-".

Merci d'avance pour votre aide.



1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
10 janv. 2011 à 00:59
Pour t'aider complètement, il nous faudrait le code de poly.h

Néanmoins j'émet des réserves sur ton utilisation de temp, j'ai l'impression que ce n'est qu'un char mais tu t'en sers en le déclarant char* et en te promenant avec l'*...

Essaye tout simplement :

char temp;

temp = chaine[0];
for (j=0; temp!='\0'; j++)
//...

Remarque : cela soulève un autre problème avec l'utilisation de atoi(temp);

De plus tu utilises : if (temp==...) else if (temp==...)
Pourquoi ne pas utiliser plutôt un switch(temp) ?
De même pour tes if(cas==) successifs
0