Les puissances de 2 qui entourent un nombre

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 303 fois - Téléchargée 29 fois

Contenu du snippet

ce program a pour but entourer un nombre strictement positif par les deux puissanes de 2 qui l'entourent
exemple :
2^7=128 <145< 2^8=256
pour le compiler , utiliser turbo pascal

Source / Exemple :


program Puissances2Entourent;
var  n,m,k:longint;
function psc(a:longint;n:shortint):longint;
     var i:shortint;b:longint;
     begin
     b:=1;
     i:=1;
     while i <= n do 
                    begin 
                           b:=b*a;
                            i:=i+1
                    end;
     psc:=b;
     end;
begin
     repeat
     write('Entrez un nombre strictement positif (0/fin): ');
     readln(n);
     if n>0 then 
     begin
     k:=0;
     m:=n;
     while m div 2>=1 do 
                               begin
                                k:=k+1;
                                m:=m div 2 
                               end;
     writeln('2^',k,'=',psc(2,k),'<=',n,'<= 2^',k+1,'=',psc(2,k+1));
     end
     else writeln('warning!!!! le nombre doit être > 0');
     until n=0;   
end.

Conclusion :


pour sortir, entrez 0 comme nombre
c'est le 2eme promam que je publie sur ce site . comme vous pouvez le constater , ce n'est qu'un simple program . mais peut être qu'il sera util pour quelqu'un entre vous .
pour l'explication du fonctionnement ,dabord j'ai fait une fonction pour calculer la puissance . puis j'ai developpé le corps du program . je crois que la methode utilisée est assez simple.
merci de me signaler les erreurs.

A voir également

Ajouter un commentaire

Commentaires

cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
grandvizir : Où est le problème ?

Imaginons que je veuille encadrer PI :
Et bien il est entre :
Valeur_Entiere_de(PI* 10^p) / (10^p)
et
Valeur_Entiere_de(PI* 10^p + 1) / (10^p)
avec p dans l'ensemble N (et PI une valeur machine dont tjrs < à la "vrai" valeur"

Ensuite a toi de simplifier la fraction ...
Donc aucune difficulté !
Par contre j'aimerais bien savoir comment calculer les decimale de PI, cad connaitre l' "algo" qui permet de les calculer... Ca, ça m'interesserais bcp !
cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
10 -
La fonction LN n'est qu'un simple appel à une instruction en assembleur qui fait travailler seulement le coprocesseur arithmétique (ce qui n'est pas le processeur).

C'est bien plus rapide que de faire des boucles, car je connais un circuit électronique qui s'en fout royalement.

Il aurait été plus sympathique de faire un programme qui entoure d'une fraction un nombre irrationnel ou presque (car il y aura tjs des approximations avec les nombres flottants appilqués aux irrationnels). N'oublions pas que l'ensemble des rationnels est aussi dense que l'ensemble des réels. D'où la possibilité d'effectuer un encadrement.

On peut toujours utiliser la dichotomie si l'on veut, mais au final, le prog est faiblement intéressant et le logarithme de Zero00l met fin à toute discussion.
cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
Oui...
Mais ça utilise moins de mémoire (pour de pas dire aucune !) et deuxio question vitesse je ne sais pas ... pour de grande puissance tu fais pas mal de divisions ...
de toute facon pour les puissances de 2 vive le C (ou l'assembleur).
cs_peecota
Messages postés
3
Date d'inscription
mercredi 4 juin 2003
Statut
Membre
Dernière intervention
12 octobre 2004
-
merci pour la regle mathematique, mais est que tu penses vraiment que votre methode est la plus rapide?
peut etre qu'elle est plus courte mais elle n'est pas plus rapide. en effet, vous vaez utilisez une fonction (ln)
donc votre program va detrerminer des chifres apres la vergule qu'on en pas besoin. et ca prend du temps.
dans la majorites des program on peut toujours utiliser des fonctions predifinis mais le problem ce qu'ile ne sont pas toujours utils.
cs_Zeroc00l
Messages postés
370
Date d'inscription
lundi 1 avril 2002
Statut
Membre
Dernière intervention
11 février 2010
-
* Plus courte et plus rapide que la tienne je pense.
* De plus on notera qu'on peut changer la base très simplement ... il suffit de changer les '2' ...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.