Besoin d'aide en C

Discussion dans 'Web, design' créé par Tarnak, 1 Octobre 2004.

Statut de la discussion:
Fermée.
  1. Offline
    Tarnak »Tarnakeur«
    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 :p)

    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 :p


    EDIT: le prog avait qq probs, je l'ai édité.
    Tarnak, 1 Octobre 2004
    #1
  2. Offline
    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.
    Tifox, 2 Octobre 2004
    #2
  3. Online
    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 :)
    theodorus, 2 Octobre 2004
    #3
  4. Offline
    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:
    ImMorT4L, 6 Octobre 2004
    #4
  5. Offline
    zoheir cvm.mangaleet()
    bah voilà utilise un gotoxy ..
    zoheir, 7 Octobre 2004
    #5
Statut de la discussion:
Fermée.