risbo Posté(e) le 25 janvier 2010 Partager Posté(e) le 25 janvier 2010 Voila je dois creer une fonction qui donne les nombres de Fibonnaci pairs mais celle que j ai fais ne fonctionne pas ;-( Suite de Fibonnaci main (){ int a; int b; int c; a=1; b=2; print 1; print 1; encore: a=a-1; b=b-2; c=a+b; if (n&1==1) go to encore; printf ("%d ",c); go to encore; } l erreur est erreur: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘de’ ili375@ultra5$ Merci de votre aide :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
Shtong Posté(e) le 25 janvier 2010 Partager Posté(e) le 25 janvier 2010 Quel est le langage utilisé ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
risbo Posté(e) le 25 janvier 2010 Auteur Partager Posté(e) le 25 janvier 2010 Quel est le langage utilisé ? Du C, mais je crois que le probleme est resolu il semble que ce soit betement um probleme de librairies qui netaient pas indiques Lien vers le commentaire Partager sur d’autres sites More sharing options...
sarx Posté(e) le 25 janvier 2010 Partager Posté(e) le 25 janvier 2010 Une version simple faite en deux minutes au boulot version naïve, on calcul fibonnaci(x), s'il est pair on l'affiche, puis on calcul fibonnaci(x+1)... #include <stdio.h> int fibo (int n) { if (n==1) return 1; if (n==0) return 0; return (fibo(n-1) + fibo(n-2)); } int main () { int r; int step; step = 2; while (step < 20) { r=fibo(step); if (r%2==0) printf("%d\n", r); step++; } return 0; } Charge a toi d'optimiser ca, histoire d'éviter de recalculer plein de fois les mêmes nombres. Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 26 janvier 2010 Partager Posté(e) le 26 janvier 2010 Quel est le langage utilisé ? Du C, mais je crois que le probleme est resolu il semble que ce soit betement um probleme de librairies qui netaient pas indiques évite les boucles inconditionnelles. pour 3 raisons : 0 - premièrement, tout ce qui est fait par goto pourrait être fait autrement . ( ici, au dessus, t'as une solution simple avec une fonction récursive ) 1 - deuxièmement : L'utilisation de Goto peut entraîner des erreurs dans la gestion de la mémoire. ( surtout en Java ou dans n'importe quel langage qui inclut un camion-poubelle ( garbage collector en Shakespirien )). 2 - troisièmement : le code est illisible. Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 26 janvier 2010 Partager Posté(e) le 26 janvier 2010 +1 http://www.u.arizona.edu/~rubinson/copyrig...ed_Harmful.html Lien vers le commentaire Partager sur d’autres sites More sharing options...
BarthVonRies Posté(e) le 26 janvier 2010 Partager Posté(e) le 26 janvier 2010 Quel est le langage utilisé ? Du C, mais je crois que le probleme est resolu il semble que ce soit betement um probleme de librairies qui netaient pas indiques évite les boucles inconditionnelles. pour 3 raisons : 0 - premièrement, tout ce qui est fait par goto pourrait être fait autrement . ( ici, au dessus, t'as une solution simple avec une fonction récursive ) 1 - deuxièmement : L'utilisation de Goto peut entraîner des erreurs dans la gestion de la mémoire. ( surtout en Java ou dans n'importe quel langage qui inclut un camion-poubelle ( garbage collector en Shakespirien )). 2 - troisièmement : le code est illisible. on dit pas un ramasse-miette plutôt en français? Sinon, +1 pour l'évitement à tout prix du goto: c'est moche, c'est sale, et ça rend le code illisible. Un simple while par exemple, avec un if, ferait très bien l'affaire. Quand tu codes, penses toujours "mon bout de code va s'insérer dans un projet de 50000 lignes, faut que j'écrive un code qui soit le plus simple à comprendre" Lien vers le commentaire Partager sur d’autres sites More sharing options...
sarx Posté(e) le 26 janvier 2010 Partager Posté(e) le 26 janvier 2010 Ou alors, dans le genre barbare tu peux aussi exploiter le coté "remarquable" de la suite de fibonnaci, pour eviter d'avoir la moindre boucle ou récursivité... F(x) = pow((sqrt(5)+1)/2, x)/sqrt(5); (et gérer la conversion double -> int avec le traitement de l'arrondi) Attention tout de même, arrivé a un moment il y aura des problèmes au niveau de la gestion des arrondis pour les sqrt(5). Enfin de mémoire (j'ai eu le même genre de problème à la fac, donc y a quelques temps déjà ^^), le problème d'arrondi n'est pas vraiment visible vu qu'avant de le rencontrer tu dépasses les capacités des int et/ou tu te retrouves avec des nombres négatif Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 29 janvier 2010 Partager Posté(e) le 29 janvier 2010 Hum y'a pas de goto en Java hein Sinon en python : def fibo(n): a,b=1,1 while(a<n): if a%2==0: print(a) a,b=b,a+b Lien vers le commentaire Partager sur d’autres sites More sharing options...
ouragan Posté(e) le 6 février 2010 Partager Posté(e) le 6 février 2010 goto est un mot réservé, mais l'instruction n'existe pas. Mais break et continue permettent de réaliser des sauts inconditionnels de la même façon : http://java.sun.com/developer/TechTips/2000/tt0613.html ( oups, je ne devrais pas ). Pour goto, quand j'étais tout petit, je m'amusais à faire des programmes en Basic ( qui n'avait pas encore la fonction RENUM , fonction qui permettait de réaffecter les numéros successifs des lignes) : ( 1982~1983 ). 10 PRINT " Bonjour." 20 ? " Entrez la valeur de X " 30 INPUT X 35 IF X < 54 THEN GOTO 60 37 IF X > 54 THEN GOTO 100 40 ? " Bravo ! vous avez trouvé !" 50 GOTO 120 60 ? " Trop petit " 70 GOTO 20 100 ? " Trop grand " 110 GOTO 20 120 ? " Au revoir." C'était une machine qui avait son système d'exploitation ( MS-DOS ) sur disquette 5"1/4. Bon, je pense qu'il vaut mieux commencer par apprendre les syntaxes du C et de Freepascal , aujourd'hui. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Ramnes Posté(e) le 22 février 2010 Partager Posté(e) le 22 février 2010 #include <stdio.h> #define CALC_LIMIT 1000000000 int main() { int i; int j; int res; i = 0; j = 1; res = 0; while (res <= CALC_LIMIT) { if (res % 2 == 0) printf("%i\n", res); res = j + i; j = i; i = res; } return (0); } (ramnes@freebsd-6 ~/test) time ./a.out 0 2 8 34 144 610 2584 10946 46368 196418 832040 3524578 14930352 63245986 267914296 real 0m0.004s user 0m0.000s sys 0m0.004s Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.