|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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
Sources en rapport avec celle ci
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
|