Accueil > > > SUITE DE FIBONACI
SUITE DE FIBONACI
Information sur la source
Description
un exemple simple de la POO et d'une librairie en cours de dévelopement (par moi même) qui permetrais d'utiliser de grands nombres... cette librairie est actuellement sufisament dévelopée pour permetre de calculer la suite de fibonaci (on ne doit faire que des aditions, donc j'ai déja fais trop de fonctions)... j'ai ajouté la multiplication et la soustraction... la suite de fibonaci est telle que : U(0)=1 U(1)=1 U(n)=U(n-1)+U(n-2) donc, il suffit de faire des aditions... U(n)/U(n-1) tend vers (1+sqrt(5))/2 (le nombre d'or)
Source
- <html>
- <head>
- <title>fibonaci</title>
- </head>
- <body>
- <input type="text" id="a" />
- <input type="text" id="b" />
- <input type="button" onclick="fibo();" value="suivant" />
- <script>
-
- function Int_big(nom,string){
- /*
- Ceci sert de constructeur....
- */
- //on y déclare les variables
- var taille=string.length;
- var i;
- //on déclare les variables de la class
- this.nombre=new Array();
- this.signe=1;
- this.taille=0;
- this.nom=nom;
- //on déclare les fonctions
- this.affiche=Int_big_afficher;
- this.valeur=Int_big_valeur;
- this.plus=Int_big_plus;
- this.moins=Int_big_moins;
- this.fois=Int_big_fois;
- this.t_react=Int_big_t_react;
- this.compare=Int_big_compare;
- //on copie le nombre dans l'objet
- for (i=0;i<taille;i++){
- this.nombre[i]=string.charAt(taille-i-1)*1;
- if (this.nombre[i]!=0)
- this.taille=i+1;
- }
- }
-
- function Int_big_afficher(obj){
- /*
- Ceci sert à afficher le nombre dans une case de texte
- */
- var i;
- obj.value=this.nom+"="+this.valeur();
- }
-
- function Int_big_valeur(){
- /*
- Cette fonction permet d'avoir dans une variable string, la chaine qui corespond aux caractères
- */
- var i, valeurs=""; //on met la valeur à 0
- for (i=0;i<this.taille;i++){ //on prends les valeurs caractères par caractères
- valeurs=valeurs+this.nombre[this.taille-i-1]; //on les ajoute à la chaine
- }
- return valeurs; //et on renvoi
- }
-
- function Int_big_moins(add){
- /*
- Ceci sert à afficher le nombre dans une case de texte
- */
- a=this.compare(add);
- if (a=="egalite"){ //si les nombres sont égaux, alors on renvoi 0
- for (i=0;i<taille1;i++){
- this.nombre[i]=0;
- }
- this.t_react(); //on recherche la taille actuelle
- }else if (a=="plus petit"){ //si le premier nombre est plus petit, alors on affiche une erreur
- alert("la soustraction entre "+this.nom+" et "+add.nom+" n'a pas pu être effactuée... "+add.com+" est plus grand que "+this.com+"...");
- }else{
- var i;
- for (i=0;i<add.taille;i++){ //on soustrait
- this.nombre[i]-=add.nombre[i];
- if (this.nombre[i]<0){ //on enlève les retenues
- this.nombre[i]+=10;
- this.nombre[i+1]--;
- }
- }
- this.t_react(); //on recherche la taille d'orifine
- }
- }
-
- function Int_big_plus(add){
- /*
- Ceci sert à afficher le nombre dans une case de texte
- */
- var i;
- var taille1=this.taille;
- var taille2=add.taille;
- if (taille2<=taille1){ //si le secons nombre est le plus petit, alors on ne vas pas jusqu'a la fin des aditions, on coupe avant
- taille1=taille2;
- taille2=0;
- }
- //alert(taille1 +','+taille2);
- for (i=0;i<taille1;i++){ //on parcourt le nombre pour effectuer les aditions
- this.nombre[i]+=add.nombre[i];
- if (this.nombre[i]>9){ //si on a une retenue alors :
- this.nombre[i]-=10;
- //ceci sert lorsque l'on ajoute un chiffre au nombre, car on n'a pas forcément assigné une valeur au chifre suivant
- if (this.nombre[i+1])
- this.nombre[i+1]++;
- else
- this.nombre[i+1]=1;
- }
- }
- if (taille2){ //si le second nombre est le plus grand, alors on va mettre la fin du nombre à la fin de la valeur
- for (i=taille1;i<taille2;i++){
- this.nombre[i]=add.nombre[i];
- // alert("i="+i);
- }
- }
- this.t_react(); //calcule la taille
- }
-
- function Int_big_fois(add){
- var i,j;
- var taille2=this.taille;
- var taille1=add.taille;
- var valeur=new Array();
- for (i=0; i <taille1+taille2+1 ; i++)
- valeur[i]=0; //mets à 0 le tableau de valeur
- for ( i = 0 ; i < taille1; i++){ //fait varier les nombres de a
- for ( j = 0 ; j < taille2 ; j++){ //puis de b
- valeur[i+j] += add.nombre[i] * this.nombre[j]; //calcule la multiplication et l'adition en même temps
- }
- }
- for ( i = 0 ; i <valeur.length; i++){ //recopie le tableau de valeurs
- while (9<valeur[i+j]){ //calcule la retenue
- valeur[i+j+1]++;
- valeur[i+j]-=10;
- }
- this.nombre[i]=valeur[i];
- }
- this.t_react(); //retrouve la taille
- }
-
- function Int_big_t_react(){
- /*
- cette fonction recalcule les tailles
- */
- for (i=0;i<this.nombre.length;i++){
- if (this.nombre[i]!=0)
- this.taille=i+1;
- }
- }
-
- function Int_big_compare(nbr){
- /*
- cette fonction permet de comparer deux nombres
- */
- var taille1=this.taille;
- var taille2=add.taille;
- var reponse="egalite";
-
- if (taille1<taille2)
- reponse="plus petit"
- else if (taille2<taille1)
- reponse="plus grand"
- else{
- for (taille1=0;taille1<taille2;taille1++){
- if (taille1<taille2){
- reponse="plus petit"
- taille1=taille2;
- }else if (taille2<taille1){
- reponse="plus grand"
- taille1=taille2;
- }
- }
- }
- return reponse;
- }
-
- function min(a,b){
- //donne le minimum entre a et b
- var min="err";
- if (a<b)
- min=a;
- else if (b<a)
- min=b;
- return (min);
- }
-
- function max(a,b){
- //donne le maximum entre a et b
- var min="err";
- if (a<b)
- min=b;
- else if (b<a)
- min=a;
- return (min);
- }
-
- function fibo(){
- var c= b.valeur();
- b.plus(a);
- a=new Int_big('a', c);
- a.affiche(document.getElementById('a'));
- b.affiche(document.getElementById('b'));
- }
- /*
- (médiocre) Exemple d'utilisation
- */
- a=new Int_big('a','1');
- b=new Int_big('b','2');
- a.affiche(document.getElementById('a'));
- b.affiche(document.getElementById('b'));
- </script>
- <p>La suite de fibonaci... (une histoire de lapins)</p>
- </body>
- </html>
<html>
<head>
<title>fibonaci</title>
</head>
<body>
<input type="text" id="a" />
<input type="text" id="b" />
<input type="button" onclick="fibo();" value="suivant" />
<script>
function Int_big(nom,string){
/*
Ceci sert de constructeur....
*/
//on y déclare les variables
var taille=string.length;
var i;
//on déclare les variables de la class
this.nombre=new Array();
this.signe=1;
this.taille=0;
this.nom=nom;
//on déclare les fonctions
this.affiche=Int_big_afficher;
this.valeur=Int_big_valeur;
this.plus=Int_big_plus;
this.moins=Int_big_moins;
this.fois=Int_big_fois;
this.t_react=Int_big_t_react;
this.compare=Int_big_compare;
//on copie le nombre dans l'objet
for (i=0;i<taille;i++){
this.nombre[i]=string.charAt(taille-i-1)*1;
if (this.nombre[i]!=0)
this.taille=i+1;
}
}
function Int_big_afficher(obj){
/*
Ceci sert à afficher le nombre dans une case de texte
*/
var i;
obj.value=this.nom+"="+this.valeur();
}
function Int_big_valeur(){
/*
Cette fonction permet d'avoir dans une variable string, la chaine qui corespond aux caractères
*/
var i, valeurs=""; //on met la valeur à 0
for (i=0;i<this.taille;i++){ //on prends les valeurs caractères par caractères
valeurs=valeurs+this.nombre[this.taille-i-1]; //on les ajoute à la chaine
}
return valeurs; //et on renvoi
}
function Int_big_moins(add){
/*
Ceci sert à afficher le nombre dans une case de texte
*/
a=this.compare(add);
if (a=="egalite"){ //si les nombres sont égaux, alors on renvoi 0
for (i=0;i<taille1;i++){
this.nombre[i]=0;
}
this.t_react(); //on recherche la taille actuelle
}else if (a=="plus petit"){ //si le premier nombre est plus petit, alors on affiche une erreur
alert("la soustraction entre "+this.nom+" et "+add.nom+" n'a pas pu être effactuée... "+add.com+" est plus grand que "+this.com+"...");
}else{
var i;
for (i=0;i<add.taille;i++){ //on soustrait
this.nombre[i]-=add.nombre[i];
if (this.nombre[i]<0){ //on enlève les retenues
this.nombre[i]+=10;
this.nombre[i+1]--;
}
}
this.t_react(); //on recherche la taille d'orifine
}
}
function Int_big_plus(add){
/*
Ceci sert à afficher le nombre dans une case de texte
*/
var i;
var taille1=this.taille;
var taille2=add.taille;
if (taille2<=taille1){ //si le secons nombre est le plus petit, alors on ne vas pas jusqu'a la fin des aditions, on coupe avant
taille1=taille2;
taille2=0;
}
//alert(taille1 +','+taille2);
for (i=0;i<taille1;i++){ //on parcourt le nombre pour effectuer les aditions
this.nombre[i]+=add.nombre[i];
if (this.nombre[i]>9){ //si on a une retenue alors :
this.nombre[i]-=10;
//ceci sert lorsque l'on ajoute un chiffre au nombre, car on n'a pas forcément assigné une valeur au chifre suivant
if (this.nombre[i+1])
this.nombre[i+1]++;
else
this.nombre[i+1]=1;
}
}
if (taille2){ //si le second nombre est le plus grand, alors on va mettre la fin du nombre à la fin de la valeur
for (i=taille1;i<taille2;i++){
this.nombre[i]=add.nombre[i];
// alert("i="+i);
}
}
this.t_react(); //calcule la taille
}
function Int_big_fois(add){
var i,j;
var taille2=this.taille;
var taille1=add.taille;
var valeur=new Array();
for (i=0; i <taille1+taille2+1 ; i++)
valeur[i]=0; //mets à 0 le tableau de valeur
for ( i = 0 ; i < taille1; i++){ //fait varier les nombres de a
for ( j = 0 ; j < taille2 ; j++){ //puis de b
valeur[i+j] += add.nombre[i] * this.nombre[j]; //calcule la multiplication et l'adition en même temps
}
}
for ( i = 0 ; i <valeur.length; i++){ //recopie le tableau de valeurs
while (9<valeur[i+j]){ //calcule la retenue
valeur[i+j+1]++;
valeur[i+j]-=10;
}
this.nombre[i]=valeur[i];
}
this.t_react(); //retrouve la taille
}
function Int_big_t_react(){
/*
cette fonction recalcule les tailles
*/
for (i=0;i<this.nombre.length;i++){
if (this.nombre[i]!=0)
this.taille=i+1;
}
}
function Int_big_compare(nbr){
/*
cette fonction permet de comparer deux nombres
*/
var taille1=this.taille;
var taille2=add.taille;
var reponse="egalite";
if (taille1<taille2)
reponse="plus petit"
else if (taille2<taille1)
reponse="plus grand"
else{
for (taille1=0;taille1<taille2;taille1++){
if (taille1<taille2){
reponse="plus petit"
taille1=taille2;
}else if (taille2<taille1){
reponse="plus grand"
taille1=taille2;
}
}
}
return reponse;
}
function min(a,b){
//donne le minimum entre a et b
var min="err";
if (a<b)
min=a;
else if (b<a)
min=b;
return (min);
}
function max(a,b){
//donne le maximum entre a et b
var min="err";
if (a<b)
min=b;
else if (b<a)
min=a;
return (min);
}
function fibo(){
var c= b.valeur();
b.plus(a);
a=new Int_big('a', c);
a.affiche(document.getElementById('a'));
b.affiche(document.getElementById('b'));
}
/*
(médiocre) Exemple d'utilisation
*/
a=new Int_big('a','1');
b=new Int_big('b','2');
a.affiche(document.getElementById('a'));
b.affiche(document.getElementById('b'));
</script>
<p>La suite de fibonaci... (une histoire de lapins)</p>
</body>
</html>
Historique
- 30 novembre 2005 13:44:21 :
- ajouts de mots clefs
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
2 javascripts à la suite?possible? [ par Floxy ]
Comment laisser exprimer 2 javascripts à la suite?j'ai fermé toutes les balises et les ai réouvertes pour le 2e script, pourtant dans le navigateur se
Encore : 2 javascripts à la suite, possible? [ par Floxy ]
J'ai posté ma source problématique. Merci de m'aider à trouver ce qui cloche.
aide svp [ par rob74 ]
je suis bloquer la dessus, qq un peut il m aidermerci d avanceÉcrivez une fonction JavaScript qui génère 6 nombres entiers pris entre 1 et 49 inclusiv
Faire apparaître la suite du texte... [ par Arno911 ]
Bonjour à tous !Je souhaite afficher une intro d'un texte sur une page et ajouter une mention genre "lire la suite" à la fin de l'intro et l
2 vidéos à la suite... [ par goingup ]
Salut!Est - il possible de lire 2 vidéos à la suite sans rien toucher au lecteur incruster dans la page?Je pense que oui, du fait que de nom
nombre premier [ par jeranvier ]
bonjours! alors otut d'abord merci de lire ce message etc etc... alors voila, je suis pas nouveau dans la programmation , mais je ne suis pas une bete
Problème positionnement menu (suite) [ par iutval ]
bonjour, Je ne me suis pas rendu compte tout de suite, mais j'ai encore un problème avec mon menu. La première barre de menu est statique da
Débutant - onmouseover [ par Clint59 ]
Bonjour à tous, Je suis en pleine galère avec ceci : <img src="Anim.gif" name="Anim0" width="498" height="97" border="0
Ecrire a la suite dans une page [ par GossBuster ]
Bonjour à tous. Mon problème est celui-ci: J'aimerais faire un "formulaire intelligent", c'est a dire: un premier formulaire se prés
bouton + - suite [ par batmanu ]
Bonjour,comme vous l'avez sans doute vu dans le forum il y a quelques jours, je cherchait à faire des boutons + et - pour incrémenter une va
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|