Autre facon pour programme pascal

Fermé
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 - 21 mars 2010 à 23:33
marspar Messages postés 90 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 29 mars 2010 - 24 mars 2010 à 16:45
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 .
A voir également:

8 réponses

le hombre Messages postés 16 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 30 juin 2011 7
Modifié par le hombre le 23/03/2010 à 05:10
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
marspar Messages postés 90 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 29 mars 2010 162
21 mars 2010 à 23:42
pourquoi tu multiplie par 10?
tu n'as qu'à afficher directement comme ça :

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

sans les multiplications!
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
22 mars 2010 à 23:14
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
le hombre Messages postés 16 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 30 juin 2011 7
Modifié par le hombre le 23/03/2010 à 04:07
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
marspar Messages postés 90 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 29 mars 2010 162
23 mars 2010 à 00:55
oui il faut que tu nous donnes plus de détails afin de t'aider
0
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
24 mars 2010 à 11:38
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
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
24 mars 2010 à 11:40
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
ayoubitou Messages postés 138 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 17 juin 2011 5
24 mars 2010 à 14:01
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
marspar Messages postés 90 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 29 mars 2010 162
24 mars 2010 à 16:45
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