Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3428 connectés 

 


Dernière réponse
Sujet : aide pascal
cobra1000000 je vous remercie tous.je vais essayer la methode de darkoli qui me semble la + clair.merci.@+

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
cobra1000000 je vous remercie tous.je vais essayer la methode de darkoli qui me semble la + clair.merci.@+
darkoli merci JPA :D
JPA C'est à mon sens la solution la plus élégante.
Bravo Darkoli ! :jap:
darkoli

darkoli a écrit a écrit :

voici une solution qui doit marche aussi et qui se rapproche des solutions deja proposée... sauf qu'elle est tres courte (peu de lignes).
 

Code :
  1. n:byte; // c'est le nombre entre 0..255
  2. i:integer;
  3. s:string[8]; // je crois que c'est comme ca que ca s'ecrit mais j'ai un doute
  4. for i:=8 downto 1 do
  5.   begin
  6.     s[i]=chr(48 + (n and 1));
  7.     n:=n shr 1;
  8.   end;
  9. writeln('Equivalent decimal: '+s);





darkoli voici une solution qui doit marche aussi et qui se rapproche des solutions deja proposée...
 

Code :
  1. n:byte; // c'est le nombre entre 0..255
  2. i:integer;
  3. s:string[8]; // je crois que c'est comme ca que ca s'ecrit mais j'ai un doute
  4. for i:=8 downto 1 do
  5.   begin
  6.     s[i]=chr(48 + (n and 1));
  7.     n:=n shr 1;
  8.   end;
  9. writeln('Equivalent decimal: '+n);

Bounga69 ben justement 2^0 = 1
              2^1 = 2
              2^2 = 4
              2^3 = 8
 
15 = (2^0 + 2^2 + 2^3 + 2^4) = 1111
 
je ne dis pas que la méthode de jpa n'est pas bonne, j'essaie de donner un truc le plus simple possible. A ce que je sache, quand on t'apprends à convertir un nombre deci en nombre binaire, on te dis de faire des divisions successives par 2, c sur quoi je me base :  
quot := 15;
rest := 0;
 
1)
quot = 7
rest = 1
 
2)
quot = 3
rest = 1
 
3)
quot = 1
rest = 1
 
et à la fin tu as 1111
 
le pb c'est que les chiffres sont affichés à l'envers donc on fait comme jpa :
on crée un tableau de longueur 8 nommé binar qu'on initialise à 0, ensuite on fait :
 bon tu fais un truc du style :  
writeln ('entrez le nb à convertir');  
readln (nb);  
quot := nb;  
rest := 0;  
i:=1;
while (quot >= 1) do  
{  
   quot := (quot div 2);  
   rest := (quot % 2);  
   binar[i] := rest;  
   i := i+1;
}  
 
for i=8 downto 1 do
 write (binar[i];
 
il me semble que ça marche comme ça.

 

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

wouatouwouatou bounga.. je crois ke ta oublié ke c par puissance de 2 :D
 
moi je suis pour la technique de jpa...
et hop, une boucle...
Bounga69 ben en fait c la même chose, m'en étais pas rendu compte, au fait div c'est la commande qui effectue une division entière, et % celle qui te donne le reste de la division entière.
JPA Je viens d'éditer mon post qui comportait des erreurs.  
J'ai pas testé, mais je pense que celà marche
A+
Bounga69 bon tu fais un truc du style :  
writeln ('entrez le nb à convertir');
readln (nb);
quot := nb;
rest := 0;
while (quot >= 2) do
{  
   quot := (quot div 2);
   rest := (quot % 2);
   write (rest);
   if (quot == 1) then  
      write ('1');
}
 
ça c'est un peu batard mais ça marche pour les nb impairs.
pour les nb pairs c différent ex: 8 c 1000
J'vis fait une fonction qui traitait bien les 2 mais à chaud peut pas te répondre.
Bounga69 tiens un ex: pour 15
15 div 2 = 7 , 15%2 = 1
bon tu as le quotient (7) et le reste (1)
ben tu fais 7 div 2 = 3 , 7%2 = 1
ensuite 3 div 2 = 1 , 3%2 = 1
bon ben tu as un quotient < 2 donc tu arrêtes et tu affiches à l'écran :  
1111.
Voilà, j'essaie de trouver un algo fastoche ensuite j'te le file.
JPA Comme l'a dit prettysmile, cette fonction n'existe pas. Elle s'écrit facilement sans division :
définir 8 bytes :
Const
 B1 = 0001; {00000001 en binaire}
 B2 = 0002; {00000010 en binaire}
 B3 = 0004; {00000100 en binaire}
 B4 = 0008; {00001000 en binaire}
...
 B8 = 0128; {10000000 en binaire}
 
 
if(Variable AND B8) <> 0 imprime 1 sinon imprime 0;
if(Variable AND B7) <> 0 imprime 1 sinon imprime 0;
...
if(Variable AND B2) <> 0 imprime 1 sinon imprime 0;
if(Variable AND B1) <> 0 imprime 1 sinon imprime 0;
 
Dans tes tests tu peux bien sur créer une variable texte au lieu d'imprimer directement
Tu peux également faire un tableau de bytes
 
ce qui donnera :  
texte:='';
for i:= 8 downto 1 do
begin
  if (Variable AND B[i]) <> 0 then texte=texte+'1' else texte := texte + '0';
end;
A+

 

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

Bounga69 bah c pas bien difficile de convertir un nb déci en bin.
Tu fais des divisions successives par 2 et tu gardes le quotient qqpart (0 ou 1). Ensuite tu affiches cette suite de chiffre et basta!
prettysmile je ne crois pas qu'une telle fonction existe. il semble plutôt s'agir d'effectuer manuellement cette conversion (et vive les divisions!!!). :D
JPA pour le point n° 2 :
alea:=min+ent(random*(max+1-min))
doit te donner un nombre compris entre min et max (inclus)
Pour le 1, je cherche 5 min
A+
cobra1000000 existe t-il (dans turbo pascal) une fonction, procedure ou instruction qui permette de convertir des nombres decimal en nombre binaire car j'ai un exercice a faire qui me demande :
   
  Ecrire une fonction qui recoit en parametre un entier inferieur a 256 et retourne son equivalent binaire.
a l'execution, vous devrez obtenir sur l'ecran:
 Entrz un nombre decimal <256 :255
 Equivalent decimal: 11111111
 Voulez vous continuez ? (o/n) :
 
 
Voici un autre exo
Ecrire une fonction utilisant la fonction predefinie RANDOM pour retourner un entier aleatoire compris entre 2 limites (min,max) passees en parametres.
  Testez la fonction en generant 1000 nombres aleatoires compris entre 1 et 10 et en affichant le nombre de fois que chaque nombre est sorti.
 Sur l'ecran, vous obtiendrez, par exemple :
   1:98
   2:104
   3:87
   ...
   ...
   10:99
 
Vous disposez pour ecrire ce programme de la fonction predefinie RANDOM .Cette fonction qui s'utilide sans argument (cas tout a fait exceptionnel) delivre comme resultat un reel compris entre 0 et1 .
 Vous avez lz droit d'ecrire:
   alea:= RANDOM;
alea etant une varible de type reel.
 
Quelqu'un pourrait m'expliquer la fonction RANDOM.comment fait-on pour definir les 2 limites.comment fait-on pour avoir des nombres 1;2;3;4;....10..1001025 alors que random nous fournit des nombres compris entre 0 et 1?MERCI
 
Je demande de l'aide car je suis des cours a distance en turbo-pascal et ces cours sont loin de tous expliquer  .merci

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)