Autre facon pour programme pascal

ayoubitou Messages postés 148 Statut Membre -  
marspar Messages postés 94 Statut Membre -
Bonjour,
je veux bien faire un programme pascal qui transforme "123" en "102030" ,un programme qui mets des "0" entre les nombres que je lui insère . j'ai fais un mais j'utilise la multiplication par 10 et j'affiche les trois nombre collé .
voila le programme ;

program fff ;
Var a,b,c :integer ;
begin
writeln ('entr' trois nombres') ;
readln (a) ;
readln (b) ;
readln (c) ;
a:=a*10 ;
b:=b*10 ;
c:=c*10 ;
writeln ('voila le resultat de la compilation') ;
writeln (a,b,c) ;
readln ;
end .

je veux bien avoir un autre qui permet de mettre le "0" entre les nombres ,et merci .

8 réponses

  1. le hombre Messages postés 20 Statut Membre 7
     
    voila la soltuion à ton sujet,ce programme fonctionne avec tous les entiers ex:1,56,123......

    program ajouter_des_zeros;     
    uses crt;     
    var x,i:integer;     
          s1,s2:string;     
    
    function int2str(a:integer):string; { convertir un entier en chaine de caractere }     
    var ch,ch2:string;     
           nb,b:integer;     
    begin     
    nb:=a;      
    b:=nb mod 10;     
    ch:=chr(b+48);       
    nb:=nb div 10;     
    
    while(nb<>0)do     
    begin      
     b:=nb mod 10;      
     ch:=ch+chr(b+48);      
     nb:=nb div 10;     
    end;     
    
    ch2:=ch[length(ch)];     
    
    for b:=length(ch)-1 downto 1 do ch2:=ch2+ch[b];     
    
    int2str:=ch2;     
    end;     
    
    begin { programme pricipal }     
    clrscr;     
    write('Entrer un entier: '); readln(x);     
    
    s1:=int2str(x);     
    
    s2:=s1[1]+'0';     
    
    for i:=2 to length(s1) do s2:=s2+s1[i]+'0';     
    
    writeln ('voila le resultat de la compilation: ',s2) ;      
    readln;     
    
    end.
    1
  2. marspar Messages postés 94 Statut Membre 162
     
    pourquoi tu multiplie par 10?
    tu n'as qu'à afficher directement comme ça :

    writeln(a,'0',b,'0',c,'0');

    sans les multiplications!
    0
  3. ayoubitou Messages postés 148 Statut Membre 5
     
    ok , j'ai un nombre entier "123" je veux que je trouve dans le resultat 102030, on peux bien divisé "123" sur 100 pour avoir 1 ,puisque en utilise "integer" on n'as pas de virgules mais pour le reste "trouvé 2 et 3 " je sais plus comment faire .
    0
  4. le hombre Messages postés 20 Statut Membre 7
     
    salut ayoubito, j'ai pas compris exactement ce que tu veux, est-ce que l'entier 123 est juste un exemple ? ou ton programme censé fonctionner uniquement avec cet entier?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. marspar Messages postés 94 Statut Membre 162
     
    oui il faut que tu nous donnes plus de détails afin de t'aider
    0
  7. ayoubitou Messages postés 148 Statut Membre 5
     
    ok pour le nombre 123 est un exemple , le programme doit mettre des zeros entre l'ensemble 123 ,pour avoir en résultat 102030 .
    0
  8. ayoubitou Messages postés 148 Statut Membre 5
     
    marspar , pour "writeln(a,'0',b,'0',c,'0'); " c'est pas possible puisque a=123 . alors je doit faire trois variables encore x,y,z .
    0
  9. ayoubitou Messages postés 148 Statut Membre 5
     
    j'ai reussi a faire le programme qu'il me faut .

    program hhh;
    var a,x,y,z :integer ;
    begin
    readln (a) ;
    x:=a div 100 ;
    y:=a div 10 - (x*10) ;
    z:=a - (x*100)-(y*10) ;
    writeln (x,0,y,0,z);
    readln ;
    end .
    merci pour votre aide.
    0
    1. marspar Messages postés 94 Statut Membre 162
       
      fais attention, ton code ne marche que sur les nombre a sur 3 chiffres, la solution de "le hombre" est certes longue mais c'est la plus complète
      0