exercice programation turbo pascal

exercice programation turbo pascal - Programmation

Marsh Posté le 18-04-2001 à 19:18:08    

:spookie: Les nombres suivants forment une suite appelle "suite de fibonacci":  
U1=1,  
U2=2,  
U3=3,  
U4=5,  
...,  
Un=U(n-1)+U(n-2) n>3  
 
a) Ecrivez un programme en turbo pascal qui calcule le nieme terme Un.  
b) On montre que, lorsque n augmente, le rapport Vn=Un/Un-1 tend vers une limite appellée "nombre d´or".  
Modifiez le programme precedent pour obtenir une valeur approchée de ce nombre avec une precision e=10^-4.  
Vous considérez que cette precision est atteinte des que abs(Vn-V(n-1))<e.  
 
je seche ! si quelqu´un pouvait mettre la reponse merci!!

Reply

Marsh Posté le 18-04-2001 à 19:18:08   

Reply

Marsh Posté le 18-04-2001 à 20:59:18    

ça a l'air d'etre plutot des maths  :hap:

Reply

Marsh Posté le 18-04-2001 à 21:48:42    

mais c'est tout facile
 

Code :
  1. function fibo(p:integer):int64;
  2. var u:int64;
  3.     u1:int64;
  4.     u2:int64;
  5.     i:integer;
  6. begin
  7.   u:=0;
  8.   u1:=2;
  9.   u2:=1;
  10.   for i:=3 to p do
  11.     begin
  12.       u:=u1+u2;
  13.       u2:=u1;
  14.       u1:=u;
  15.     end;
  16.   fibo:=u;
  17. end;
  18. function nbor(p : double):integer;
  19. var u:int64;
  20.     u1:int64;
  21.     u2:int64;
  22.     i:integer;
  23.     fu : double;
  24.     fu1 : double;
  25.     v : double;
  26. begin
  27.   u:=0;
  28.   v:=0;
  29.   u1:=2;
  30.   u2:=1;
  31.   i:=2;
  32.   repeat
  33.     inc(i);
  34.     u:=u1+u2;
  35.     u2:=u1;
  36.     u1:=u;
  37.     fu:=u;
  38.     fu1:=u2;
  39.     fu:=fu/fu1;     // Vn
  40.     fu1:=abs(fu-v); // approximation de l'erreur
  41.     v:=fu;          // on memorise Vn pour le tour suivant
  42.   until ((fu1<p) or (i>91));
  43.   nbor:=i;
  44. end;
  45. attentin j'ai utilisé des int64 : entier sur 64 bits mais pour la suite de fibo... il ne faut pas faire plus de 91 iterations, sinon on depasse la limite.
  46. pour n=91, Un=7 540 113 804 746 346 429
 

[edit]--Message édité par darkoli--[/edit]

Reply

Marsh Posté le 18-04-2001 à 22:13:39    

je te remercie, maintenant je vais essayer de comprendre le programme.@+

Reply

Marsh Posté le 18-04-2001 à 22:22:20    

j'ai compris le premier,le deuxieme est plus tordu.merci

Reply

Marsh Posté le 18-04-2001 à 23:03:16    

Oui, après, il faut utiliser des réels... (en particulier pour le problème de convergence)

Reply

Marsh Posté le 19-04-2001 à 10:24:47    

C'est (1 + sqrt(5)) / 2 la réponse non? :D

Reply

Marsh Posté le 19-04-2001 à 10:36:39    

pour une precision de 0.0001, le programme s'arrete pour n=12, donc fait le calcul

Reply

Marsh Posté le 19-04-2001 à 10:59:07    

http://chronomath.irem.univ-mrs.fr [...] eFibo.html
pour la démo mathématique
 
-> Fred999 c'est bien (1+sqrt(5))/2 la réponse.

Reply

Marsh Posté le 19-04-2001 à 15:06:03    

Question subsidiaire :
 
montrer que Phi+1 = 1/Phi
 
:D:D:D

Reply

Marsh Posté le 19-04-2001 à 15:06:03   

Reply

Marsh Posté le 19-04-2001 à 15:07:17    

question à deux balles : c'est quoi Phi ?

Reply

Marsh Posté le 19-04-2001 à 15:10:37    

Le nombre d'or, la limite de la suite de fibonacci
 
(1 + sqrt(5))/2
 
le nombre parfait qui servait déjà pour construire les pyramides d'égypte parfaites ( esthétiquement parlant bien sur )

Reply

Marsh Posté le 19-04-2001 à 16:34:43    

ça serait pas plutôt Phi - 1 = 1/phi ???

Reply

Marsh Posté le 19-04-2001 à 16:55:39    

Heu oui, ça doit être ça. mes souvenirs se sont effrités depuis la seconde ...
 
C'était pour voir si quelqu'un suivait :D

Reply

Marsh Posté le 14-04-2013 à 23:20:54    

program fibonnacci;
uses wincrt;
var
n,i,f,ff,U: integer;
Q: real;
 
begin;
readln(n);
f:=1;
ff:=1;
 
for i:=2 to n do
    begin
        U:=f+ff;
        f:=ff;
        ff:=U;
       
    end;
    writeln('Fn pour n= ',n,' est ', U);
 
     
end.  

Reply

Marsh Posté le 17-04-2013 à 02:47:19    

[:baarf:3]


---------------
Perhaps you don't deserve to breathe
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed