Arf effectivement: je doutais beaucoup du Disp, un peu du Output, mais j'en était sur pour le Text( – y'a certains programmes que l'on n'oublie pas
–
Bon, reste soit à utiliser le Text(, qui pootre vraiment pour peu que le programme soit légérement conséquent, soit la méthode pédestre (de la prog spaghetti quoi) soit y aller à la main, c'est à dire des trucs comme:
Output(A,B,C
Output(A,B+int(log(C)+1),"TRUC"
Si les Hypothèses_Qui_Vont_Bien sont vérifiées, i.e principalement : C entier > 0 – traiter les cas négatifs n'est pas trop un pb, il suffit de pendre la valeur absolue et de compter la place du signe
(1) , et on peut ruser pour le cas nul
(2) – et A+int(log(C)+1) < 16-taille_du_string_à_afficher.
En général (un compteur, un nombre connu) le signe peut être connu à l'avance, l'interval de taille est à peu près connu, ce qui peut éviter de perdre du temps à faire quelques manipes...
Mais dans le cas général:
(1) On peut obtenir le signe en faisant par exemple x/abs(x) si x est différent de 0, – si le cas nul est possible, on peut toujours ruser, cf
(2)–, et l'on peut donc obtenir le "taille" du signe (on dit que `-` prend 1 place et + aucune puisqu'il n'est pas affiché) avec par exemple: (1-S)/2, où S désigne x/abs(x)
(2) En effet log(0) n'est pas vraiment définit, et 1/0 non plus.Il suffit alors de modifier très légérement la variable sans pour autant trop modifier le résultat: par exemple si notre variable est entière, faire log(C+0.1) suffira à éviter ce problème. Si la variable comporte n décimales, il suffit en génral de rajouter un truc de la forme 1*10^(-(n+1)). Pour la division par 0, on applique le même principe, ( même si un petit rajout sera bcp plus sensible lors d'une division qu'un log..), c'est à dire que l'on fera par exemple int(abs(x)/(x+0.1)+0.2), si on veut être très précis on choisi le couple ici pris comme (0.1,0.2) en fonction de l'interval possible... En pratique, on aura tendance à calculer par exemple abs(x)/(x+0.001) en fix 0 (en faisant l'arrondi à 0 décimale quoi..)
(3) Si on n'a pas un entier, il faut distinguer deux cas: soit on affiche toujours le même nombre de décimales même si elles sont nules (donc par exemple on applique la méthode pr les nombre entier et on rajoute la taille constante du nombre de décimales), soit on veut adapter la largeur en fonction des décimales nulles ou non: c'est encore plus lourd, mais ça se fait à peu à peu près se faire normalment...