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.
Partager