Besoin d'aide en C

Statut
N'est pas ouverte pour d'autres réponses.

Tarnak

Elite
C'est un tout petit prog de débutant :)


#include <stdio.h>
void main(void)
{
int val /*valeur*/, esp /*espace*/, a=1, i=0 /*compteur*/;

printf("Entrez un nombre: ");
fflush(stdin);
scanf("%d", &val);
printf("\n\n\t0 1 2 3 4 5 6 7 8 9");
printf("\n\t----------------------------");

while(val!=0)
{
esp=val%10;
esp=esp*3+7-i;
val=val/10;
i=i+1;
printf("\t\t\n%d|%*c\n", a, esp, '*');
a=a*10;
}
printf("\n\n");
}


Ca doit metre des étoile pour les unités et tout tout (le mieux c'est de le tester pour comprendre, paske c'est dur a expliquer ^^)

Le truc c'est que j'aimerais que le truc au dessus du while (0 1 2 3 etc) soit décalé par rapport au nombre entré, si je met 4 chiffres, il faut qu'il soit décalé de 5 (pour pouvoir metre le "10000" devant), si je met 5 chiffre, un décalage de 6, etc

J'espere avoir été compréhensible :s sinon dites moi ce que je comprennez pas ^^


EDIT: le prog avait qq probs, je l'ai édité.
 

Tifox

ou pas
Ce que je vais dire est de mémoire, j'ai plus fais de c depuis qq temps, c'est donc a vérifier.

Je pense qu'il existe une fonction length() ou size() qui permet de connaitre la longueur d'une chaine de caractère.

Sinon, la solution barbare : tu fais une boucle qui fais une division entière par 10 sur ton nombre et qui rajoute un espace a chaque fois.
 
T

theodorus

ex membre
C'est aussi un problème : pour calculer la longueur, tu dois soit faire une boucle qui fait une division par 10, soit convertir en string... sachant qu'il faudra refaire une série de modulo par 10 + division par 10 après pour avoir le nombre d'unités en cours à afficher, les deux méthodes sont lourdes avec du code redondant... on pourrait peut-être stocker les unités à chaque itération dans la première boucle, mais faire une liste au vol prends aussi du temps. Il y a peut-être un moyen mathématique pour stocker une suite de nombre dans un espace limité, mais là c'est très loin de mes capacités :)
 

ImMorT4L

Touriste
Faut voir le compilateur que tu utilises et si tu prog doit être portable :roll:

Sinon, tu utilises bêtement un gotoxy() qui prends ton déplacement en abscisse et celui en ordonnée... Et y place le curseur.
Exemple: gotoxy (28,8 )

Suffit alors de faire le printf où tu veux afficher le nombre :cool:


PS: Je suis pas sûr d'avoir bien compris ton problème, en fait :roll:
 

zoheir

cvm.mangaleet()
bah voilà utilise un gotoxy ..
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut