Bonjour à tous,
J'aimerais dessiner un tableau dans la console MS-DOS.
Voici ce que donne ma première tentative :
Vous aurez je pense reconnu le calcul d'un PGCD![]()
Auriez-vous une méthode pour faire un beau tableau ?
Merci d'avance.
Bonjour à tous,
J'aimerais dessiner un tableau dans la console MS-DOS.
Voici ce que donne ma première tentative :
Vous aurez je pense reconnu le calcul d'un PGCD![]()
Auriez-vous une méthode pour faire un beau tableau ?
Merci d'avance.
Moi pour ma part lors d'un mini proj de maths où j'avais besoin d'aligner des éléments tout comme toi, j'ai utilisé le système D à savoir j'avais fait une fonction qui prenait un nombre, et qui renvoyait une chaine de caractères avec uniquement des espaces, proportionnelle à la taille du nombre passé en paramètre ... :p
Tu peux utiliser un des spécificateurs de printf : %5d par exemple, pour compléter l'affichage par des espaces, jusqu'à obtenir 5 caractères affichés.
Voir ici pour plus de spécificateurs: http://www710.univ-lyon1.fr/~rchaine...intf_form.html
Essaye par exemple le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 for (int i=1; i<10000; i=i*2) { printf("| %5i | \n", i); }
Le seul problème avec cette méthode, c'est que si tu as un nombre qui fait plus de 5 chiffres, tu auras quand même un décallage.
En effet :/
Mais dans le cas précis de cet algorithme, à priori les nombres ont de moins en moins de chiffres. Tu pourrais donc "calculer" le nombre de chiffres du 1er nombre, et t'en servir comme largeur.
Par contre, évidemment, comme "%5d" est une chaine de caracères, il faudra la générer à la volée, à l'aide de sprintf par exemple.
Ce code est entièrement non-testé, mais c'est pour donner une idée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 int largeur; /* nombre de chiffres max */ char format[32]; /* format pour printf */ largeur = calculerLargeur( nombreLePlusGros ); /* à coder */ sprintf(format, "| %%%dd | \n", largeur ); /* format devrait contenir une chaine du type: "| %7d | \n" */ for (int i=1; i<10000; i=i*2) printf(format, i);
Ben voici ce que ça me donne :
Je pense que c'est déjà pas mal![]()
C'est déjà beaucoup mieux que ce que tu avais au départ.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager