programme pascal qui transforme "123" en "102030" résolu [pascal] - Delphi/Pascal - Programmation
Marsh Posté le 23-03-2010 à 13:18:01
Il faudrais récupérer
le poids des unités et
multiplier par dix
le poids des disaine et
multiplier par 100
le poids des centaines et
multiplier par 1000
Ainsi de suite.
Et faire l'addition.
Marsh Posté le 23-03-2010 à 13:54:18
merci pour votre réponse mais j'ai pas bien compris en tous cas j'ai trouvé la solution je pense "x=654"
a:=x/100 =6
b:=x/10 -a*10 =5
c:=x -a*10 -a*100 =4
apres en affiche a,(0),b,(0),c,(0)
et voila le résultat 605040 .
Marsh Posté le 23-03-2010 à 14:03:33
Non, il doit falloir le calculer, insérer un zéro en vrac, c'est pas du job.
Je m'embrouille un peu.
Code :
|
Marsh Posté le 23-03-2010 à 15:22:25
ayoubitou a écrit : Bonjour, |
Moi quand je vois "123" je me dis que c'est pas un nombre (123 lui est un nombre par contre!), mais une chaine de caractères qu'il faut lire char par char et écrire dans un autre buffer en insérant un "0" entre chaque.
Marsh Posté le 23-03-2010 à 15:33:10
Ça peut être une solution d'en faire une chaîne de caractères décimale, de rajouter les 0, et de parser le résultat.
Pas forcément la meilleure, mais ça peut être une solution.
Marsh Posté le 23-03-2010 à 15:43:20
Sinon avec la récursivité c'est facile, voici ce que j'ai fait en C:
Code :
|
Marsh Posté le 23-03-2010 à 19:42:37
pour que je puisse exécuter bien mon programme ,j'ai besoin de la division mais ca marche pas .
program hhh;
var a,b :char ;
begin
readln (a) ;
b:=a/10 ;
writeln (b) ;
end .
il m'affiche "error 26 type mismatch" ,je veux reglé ce problème pour exécuter le programme
Marsh Posté le 23-03-2010 à 22:30:37
ReplyMarsh Posté le 23-03-2010 à 23:50:27
ya pas une solution pour la division ,parce que avec l'adition ou la multiplication ca marche .
pour le programme que tu m'as ecris je le comprend pas du tous ,puisque je viens de commencer pascal .
si ya une solution avec un programme plus simple ,indique-le moi .
Marsh Posté le 24-03-2010 à 10:18:11
ayoubitou a écrit : |
Tu peut tenter de déclarer b comme un réel.
ayoubitou a écrit : |
Tu débute tout court en programmation ?
Un autre exemple avec le langage Ada ne t'avancera pas d'avantage.
Tu peut remarquer que je n'utilise pas de réel, ce qui peut te montrer que d'en utiliser serait une erreur.
Pour t'aider dans le sens de ton programme, déclare plutôt a, b, c comme entier, comme prévu, et cherche comment saisir et afficher un entier au clavier.
Marsh Posté le 24-03-2010 à 11:58:34
Code :
|
Pour copier le code tu double clique dessus pour faire péter le numéro des ligne.
Marsh Posté le 24-03-2010 à 11:59:35
Désolé pour le problème de la saisie, en fait, je ne savais pas à quel point Pascal était puissant.
Marsh Posté le 24-03-2010 à 14:00:34
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.
Marsh Posté le 24-03-2010 à 14:26:28
ayoubitou a écrit : j'ai reussi a faire le programme qu'il me faut . |
456 => 40506
Il manque un zero.
Marsh Posté le 24-03-2010 à 15:34:04
Et si l'utilisateur rentre un nombre à 4 chiffres?
Tu devrais revoir ta façon de résoudre le problème...
Marsh Posté le 02-04-2010 à 21:32:40
ayoubitou a écrit : j'ai reussi a faire le programme qu'il me faut . |
si c'est pour au final ajouter des 0, tu prend l'entrée en var tmp:string; pis la sortie tmp2:string;
pis tu fait
for i := 1 to length(tmp) do tmp2:= tmp[i]+'0'; |
mais ouais c'est surement pas le but du sujet
Marsh Posté le 08-04-2010 à 14:51:20
uses crt;
var a:string ;
i:integer;
begin
clrscr;
readln(a);
for i:=1 to length(a) do insert('0',a,2*i);
writeln(a);
readln;
end.
Il est toujours possible de convertir avec "val" et "str" les chaînes en nombres et les nombres en chaînes.
Marsh Posté le 22-03-2010 à 23:21:29
Bonjour,
je veux faire un programme pascal qui transforme "123" en "102030" ,un programme qui mets des "0" entre le nombre que je lui insère . je le mets le nombre 654 il me donne en résultat 605040 .
je pence qu'on doit divisé 654 par 100 pour avoir le 6 "on utilise dans VAR integer " alors sans virgule ,mais pour le reste je ne sais plus ,si vous pouvez bien me donner une solution ,et merci .
Message édité par ayoubitou le 27-04-2010 à 22:31:21