Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2771 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Polynôme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Polynôme

n°2047730
Plame
Posté le 09-01-2011 à 23:31:40  profilanswer
 

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;
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "poly.h"
  4. int main()
  5. {
  6. Polynome polynome;
  7. char chaine[100];
  8. char* temp;
  9. int i, j, cas;
  10. printf("Saisissez votre pôlynome :\n" );
  11. scanf("%s",chaine);
  12. *temp = chaine[0];
  13. for (j=0; *temp!='\0'; j++)
  14. {
  15.     cas=0;
  16.     for (i=1; *temp!='+' && *temp!='\0'; i++)
  17.     {
  18.         if (*temp=='x')
  19.         {
  20.             *temp=chaine[i];
  21.             continue;
  22.         }
  23.         if (*temp=='/')
  24.         {
  25.             cas=cas+1;
  26.             *temp=chaine[i];
  27.             continue;
  28.         }
  29.         if (*temp=='^')
  30.         {
  31.             cas=cas+2;
  32.             *temp=chaine[i];
  33.             continue;
  34.         }
  35.         if (cas==0)
  36.             polynome.monome[j].num =atoi(*temp);
  37.         else if (cas==1)
  38.             polynome.monome[j].den =atoi(*temp);
  39.         else if (cas==2)
  40.             polynome.monome[j].degre =atoi(*temp);
  41.         *temp=chaine[i];
  42.     }
  43. }
  44. }


 
 
 
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.

mood
Publicité
Posté le 09-01-2011 à 23:31:40  profilanswer
 

n°2047739
gilou
Modérateur
Modosaurus Rex
Posté le 10-01-2011 à 03:44:33  profilanswer
 

atoi prend un char * en parametre.
*temp n'est pas un char * mais un char.
Donc: atoi attend l'adresse d'une chaine. Tu lui passe un char. Il prend ce char, le considère comme une adresse, et va pour lire la chaine à cette adresse. Mais comme c'était pas une vraie adresse, la zone mémoire n'est pas lisible (ie, même si toute mémoire est en principe lisible, c'est pas un endroit ou il est censé se trouver des données de ton programme, et ça active une protection), et le message de ton compilateur est cohérent.
 
A+,


Message édité par gilou le 10-01-2011 à 03:50:07

---------------
There's more than what can be linked! --  Le capitaine qui ne veut pas obéir à la carte finira par obéir aux récifs. -- Il ne faut plus dire Sarkozy, mais Sarkozon -- (╯°□°)╯︵ ┻━┻

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Polynôme

 

Sujets relatifs
Résoudre polynome de degré 2algo multiplication polynome par un entier
[C,C++,autres] Calcul polynome degres 5 avec variables 32bitsdéfinir un polynome à l'aide de la fonction "atoi" avec des listes
fonction polynomePolynome second degre
Calculatrice Polynome 
Plus de sujets relatifs à : Polynôme


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)