Page 1 of 2

Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 20:49
by thomas425
Bonjour à tous,

Je débute seulement dans la programmation et pour mes débuts j'ai voulu créer un programme qui, en rentrant un nombre en base décimale, sort ce nombre écrit en binaire.
Bon voilà l'objet de ce post : mon soucis et qu'à l'affichage de mes 0 et 1 il me fait un retour à la ligne permanent.
En gros ça me sort ça :
0
1
0
1
1

Alors que je cherche à afficher ça : 01011

On m'a vaguement parlé de concaténation mais je ne sais pas ce que c'est et si c'est la solution au problème..

Enfin voilà merci de m'apporter une réponse,
Merci :)

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 20:53
by critor
Merci pour ton message détaillé :)

Ok, je vois.
Donc oui, chaque instruction de sortie 'Disp' exécutée utilise obligatoirement une nouvelle ligne.

Une solution donc de construire progressivement ce qui doit être affiché (par concaténation justement), et de n'effectuer qu'un seul afficher à la fin hors de la boucle.


Pourrais-t-on avoir ton code actuel?

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 20:57
by thomas425
Code: Select all
Define bin(n)=
Prgm
:Local r
:While n>0
:r:=n-2*int(((n)/(2)))
:Disp r
:n:=int(((n)/(2)))
:EndWhile
:EndPrgm


Bon il y a des doubles points qui se sont affichés au copié collé mais je ne les ai pas sur l'ordi.. Et bcp de parenthèses qui rendent la lecture un peu lourde, désolé :s

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 21:05
by critor
Ok, alors une des méthodes possibles est d'écrire au fur et à mesure tes valeurs à la fin d'une chaîne de caractères que l'on affichera à la fin.
Appelons cette chaîne 's' par exemple.

On l'initialise au départ avant la boucle à une chaîne vide avec:
Code: Select all
s:=""


Et au lieu d'afficher la valeur de 'r' calculée, on va l'écrire à la fin de la chaîne 's' (c'est-à-dire la concaténer) ainsi:
Code: Select all
s:=s&string(r)


Le code adapté devrait donner ça:
Code: Select all
Define bin(n)=
Prgm
Local r,s
s:=""
While n>0
r:=n-2*int(((n)/(2)))
s:=s&string(r)
n:=int(((n)/(2)))
EndWhile
Disp s
EndPrgm


Sur l'exemple que tu donnes, 's' vaudra "0" à la fin de la première itération de la boucle, puis "01", "010", "0101" et enfin "01011".
C'est donc cette dernière valeur qui sera affichée :)

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 21:23
by thomas425
D'accord merci, je viens de modifier et ça affiche ce que je cherche, maintenant il me reste encore à afficher les chiffres dans l'ordre, je vais essayer seul mais si je n'arrive pas je redemanderai de l'aide (c'est pas évident au début ^^)

En tout cas merci bcp, ta réponse est bien claire et détaillée, merci ! :)

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 21:25
by Hayleia
thomas425 wrote:D'accord merci, je viens de modifier et ça affiche ce que je cherche, maintenant il me reste encore à afficher les chiffres dans l'ordre, je vais essayer seul mais si je n'arrive pas je redemanderai de l'aide (c'est pas évident au début ^^)

En tout cas merci bcp, ta réponse est bien claire et détaillé, merci ! :)

En fait c'est extrêmement simple d'inverser l'ordre des chiffres. Je mets la réponse en spoiler au cas où tu veux chercher tout seul.
Show/Hide spoilerAfficher/Masquer le spoiler
Remplace s:=s&string(r) par s:=string(r)&s
Au lieu d'ajouter les chiffres à droite, on les ajoute à gauche.

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 21:28
by Extra44
Hello
Contrairement à ce que je t'ai dit dans le chat,

je pense qu'il vaut mieux laisser thomas425 chercher un peu tout seul ...
Si je le comprends, il est en phase d'apprentissage ...
;)

Extra

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 21:30
by Hayleia
Extra44 wrote:Hello
Contrairement à ce que je t'ai dit dans le chat,

je pense qu'il vaut mieux laisser thomas425 chercher un peu tout seul ...
Si je le comprends, il est en phase d'apprentissage ...
;)

Extra

Lol, faut savoir ;)
Non mais j'ai mis la réponse en spoiler, donc il ne la voit pas tant qu'il ne décide pas de la voir.

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 21:37
by thomas425
J'avais la bonne idée je suis content. Merci d'avoir répondu quand même, je vais maintenant essayer de créer un convertisseur d'un nombre en base 10 en base n voulue, déjà plus dur (surtout pour une base > 10), je solliciterai certainement bientôt votre aide ;)

Re: Problème de retour à la ligne en affichage de programme

Unread postPosted: 04 Nov 2013, 21:40
by Extra44
Ce n'est pas forcément plus dur :
Si tu as fais base 10 -> base2, tu as quasiment tout fait déjà ...

Il ne reste que quelques trucs (aux bons endroits) à changer ...
;)