Probleme de polynomes - C - Programmation
Marsh Posté le 10-01-2004 à 18:23:10
déboggage à distance j'écoute ?
Veuillez faire une trace en utilisant les points d'arrêts.
Dire qu'une fonction "ne marche pas" veut dire quoi exactement ?
Marsh Posté le 10-01-2004 à 18:48:34
!! je cromprends pas trop ta fonction evaluer_poly
elle me semble un peu compliquée.. pas besoin de recursivité selon moi, sauf si c la consigne
en ittératif, tu t'en sortiras mieux je pense
Marsh Posté le 10-01-2004 à 18:54:07
Citation : |
voila, je pense que c plus simple, en oubliant pas d'inclure math.h pour la fonction pow
Marsh Posté le 10-01-2004 à 19:46:47
Code :
|
la deja tu as une boucle infinie des que mulv > 1...
A+,
Marsh Posté le 10-01-2004 à 19:57:42
printf("\nCoeff ? : " );
scanf("%f", &c);
->
printf("\nCoeff ? : " );
fflush(stdout);
scanf("%f", &c);
Marsh Posté le 10-01-2004 à 19:59:32
taz a écrit : printf("\nCoeff ? : " ); |
je veux pas t'embeter
mais c pas fflush(stdin) ?
Marsh Posté le 10-01-2004 à 20:01:30
ah
pourtant, on veut vider le tampon du periph d'entrée, pas de sortie..
Marsh Posté le 10-01-2004 à 20:02:48
captainneuneu a écrit : ah |
c'est l'inverse
Marsh Posté le 10-01-2004 à 20:10:10
je lis dans mon livre :
"la fonction fflush fait disparaitre les informations presentes dans un flot, y compris le flot d'entree standard[...]"
plus loin, dans le listing :
"fflush(stdin);
scanf("%s",name)"
on m'a toujours dit qu'il fallait mettre fflush(stdin) avant tout scanf
maintenant, j'aimerais que tu m'explique, sans t'emporter, a koi sert fflush(stdout) et quel est son interet dans ce cas
Marsh Posté le 10-01-2004 à 20:12:59
gilou > j'ai des palpitations et une douleur dans le bras gauche
Marsh Posté le 10-01-2004 à 20:14:57
taz a écrit : ton bouquin est mauvais, tes enseignements sont faux |
premiere reponse de google :
http://iihm.imag.fr/dubois/fr/Ense [...] _CCI/TD3.c
Marsh Posté le 10-01-2004 à 20:17:00
captainneuneu a écrit : |
joue pas au plus malin, je sais très bien de quoi je parle et j'ai déjà rabattu les oreilles à tout le monde ici à ce propos. Procure toi un livre de C (et un vrai). Et je suis payé pour faire les recherches sur le forum à ta place
Marsh Posté le 10-01-2004 à 20:18:01
hum
autre réponse de google :
Citation : 14.4 Pourquoi ne jamais faire fflush(stdin) ? |
je reste perplexe, et ca remet en cause tout ce que g appris
je comprends plus rien la
Marsh Posté le 10-01-2004 à 20:19:04
taz a écrit : joue pas au plus malin, je sais très bien de quoi je parle et j'ai déjà rabattu les oreilles à tout le monde ici à ce propos. Procure toi un livre de C (et un vrai). Et je suis payé pour faire les recherches sur le forum à ta place |
conseille moi un bon livre dans ce cas..
j'ai le Langage C collection Le Programmeur aux édtions Campus Press
Marsh Posté le 10-01-2004 à 20:19:49
captainneuneu a écrit : |
ben le K&R
Marsh Posté le 10-01-2004 à 22:11:16
taz a écrit : gilou > j'ai des palpitations et une douleur dans le bras gauche |
Moi aussi, en lisant le code C, j'ai eu un peu d'urticaire...
A+,
Marsh Posté le 10-01-2004 à 22:27:26
Code :
|
sinon tu as des coeffs de meme rang qui se suivent sans etre regroupes.
A+,
Marsh Posté le 10-01-2004 à 23:03:25
Et pour ta fonction d'eval, si tu expliquais l'algo que tu veux appliquer...
A+,
Marsh Posté le 10-01-2004 à 23:57:49
gilou a écrit :
|
Ah oui t'as raison ca testait pas pour le dernier monome si les exposants étaient égaux, j'ai corrigé
Marsh Posté le 10-01-2004 à 23:58:48
captainneuneu a écrit : !! je cromprends pas trop ta fonction evaluer_poly |
Oui évidemment la consigne était de l'écrire en récursivité
Sinon en itératif c simple.
Marsh Posté le 10-01-2004 à 23:59:42
gilou a écrit :
|
ah ben voila jcrois que c ca lol jdevais pas etre très réveillé à ce moment là
Jvais tester
Marsh Posté le 11-01-2004 à 00:09:46
gilou a écrit :
|
Mouais j'ai rajouté la condition d'arrêt mulv-- à la fin de la boucle mais l'algo ne marche que lorsque tous les monomes du polynome ont des degrés qui se suivent (par ex. x^0 + x^1 + x^2) et il affiche un résultat faux pour par exemple x^0 + x^2)
Pour le fonctionnement, c'est repris sur la représentation d'Horner. Mais j'ai rajouté l'histoire du mulv pask mes monomes peuvent ne pas etre d'exposant qui se suivent, donc je multiplie ma valeur par la différence de l'exposant du monome n avec celui du monome n-1
Fin ché pas si c bien expliqué, jreviendrai demain pour faire un truc plus clair bnone nuit
Marsh Posté le 11-01-2004 à 00:24:18
captainneuneu a écrit : |
Non c'est en récursif qu'il faut le faire (Horner)
Marsh Posté le 11-01-2004 à 03:44:20
Bon alors:
1) Horner c'est pas du recursif, mais de l'iteratif. Voir par exemple ce lien http://www.umh.ac.be/math/an/courses/Horner.pdf qui est tres tres clair
2) Horner se fait en triant le polynome par ordre decroissant
donc
Code :
|
3) Pour horner, ta fonction int mult(int mulv, int v) doit clairement calculer la puissance mulv-ienne de v
Code :
|
4) et c' est donc un algo iteratif ecrit a la va vite comme suit:
Code :
|
J'ai ecrit cette forme de l' algo a vue de nez a partir de la formule du lien donne en 1)
Cette ecriture peut sans doute s' ameliorer.
A+,
Marsh Posté le 11-01-2004 à 11:54:14
gilou a écrit : Bon alors:
|
Salut,
Jte remercie mais en fait c'est pas ce que je cherche, puisque comme je l'ai dis je dois le faire en Récursif et non Itératif !
Pour avoir une idée du fonctionnement voir ici http://benrida.univ-tln.fr
Dans la sous-partie "Récursivité" puis "Horner".
En fait comme je l'ai dit hier, j'arrive à le faire si les monomes qui se suivent ont des exposant qui se suivent (dans ce cas il faut enlever qqes trucs avec mulv dans mon code) mais ac ne marche pas quand les exposant ne se suivent pas, l'idée étant de multiplier v par la différence de 2 exposants côte à côte.
Voila voila
Merci
Marsh Posté le 11-01-2004 à 16:34:28
Je viens de voir le texte.
C'est neanmoins ainsi que je te l'ai dit (bon, il veut faire ca de maniere recursive alors que c'est naturellement iteratif )
Neanmoins, si tu regardes, tu verras que contrairement a ce que tu as initialement fait,
1) On commence par le degre le plus fort, donc tri drecroissant
2) ta fonction mult doit bien etre l'exponentiation que je te decris.
Relis le lien que tu m'as donné, c'est tres clair.
Autant ecrire une exponentiation complete:
Code :
|
3) si tu veux une fonction recursive, comme le resultat obtenu doit etre multiplie par les puissances intermediaires a chaque appel, il va falloir que tu le passes en parametre.
Tu auras donc qque chose comme:
Code :
|
que tu appelles avec
Code :
|
Bon la encore un truc ecrit vite fait (entre deux decoupes de papier peint), a toi d'ameliorer ce type de code.
A+,
Marsh Posté le 10-01-2004 à 17:01:36
Salut tlm
J'ai écris ces algos de manipulation de polynomes mais la fonction evaluer_poly ne marche pas Vous pourriez m'aider svp ?
Ps : J'ai du faire des bêtises dans le reste du code, alors si vous avez des remarques...
---------------
- mon feed-back