IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Affichage de grillage


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Par défaut Affichage de grillage
    Bonjour,je suis en train de faire un programme en language C et j'ai un petit problème avec l'esthétique...Car lors de l'exécution,l'affichage des matrices est tres laid et c'est pas tres lisible :/.
    J'utilise le compilateur gcc,et je voudrais donc avoir un dessin comme une sorte de grille avec les valeurs de la matrice correspondante dedans...Quelque chose comme ceci p.ex:
    _ _ _
    |_|_|_|
    |_|_|_|
    |_|_|_|
    |_|_|_|

    Je n'ai aucune idée comment je pourrais faire une fonction pour cela,
    Merci d'avance

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Hello,

    Ce n'est qu'une question d'affichage. C'est à toi de définir l'aspect que tu veux donner à ta grille. Le C ne t'impose pas de limitation de ce côté. Personnellement, avec le recul, je trouve que les grilles les plus esthétiques sont celles qui utilisent des « + » à tout les coins, des tirets pour les lignes horizontales et des pipes pour les lignes verticales. D'abord parce que ces deux derniers sont généralement bien centrés dans la case qui contient le caractère, ensuite, parce qu'ils sont réguliers sur le tableau entier. Je trouve personnellement cela plus propre que d'essayer de lisser les angles avec d'autres caractères. Maintenant, l'égout et l'écouleur ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    +--+--+--+--+
    |  |  |  |  |
    +--+--+--+--+
    |  |  |  |  |
    +--+--+--+--+
    |  |  |  |  |
    +--+--+--+--+
    Pour l'affichage des matrices, la première chose à faire est de contrôler le format du contenu de chaque cellule. Si c'est un nombre, tu peux imposer une largeur à l'affichage dans la fonction printf(). Ex :


    plutôt que :


    Tu arriveras ainsi à afficher des valeurs alignées horizontalement et verticalement. Dès lors, tu pourras intercaler des pipes entre eux.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Par défaut Utiliser les balises [CODE] (bouton #)
    Bon,je suis assez nul en informatique et je vois pas comment je pourrais faire,p.ex pour avoir a l'affichage au coté gauche en haut le symbole ascii E9; pour faire une partie des bords par exemple...

    Si tu pourrais me montrer un exemple sur cet fonction simple en dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void ecrireMatrice(Matrice a, int n) 
    {
     
     
       int i, j;
     
    	for (i = 0; i < n; i++) 
    		{
    			for (j = 0; j < n; j++)
     
    			printf("%d ", a[i][j]);
    			printf("\n");
    		}
    	printf("\n");
    }
    Merci d'avance

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Par défaut
    Personnellement, avec le recul, je trouve que les grilles les plus esthétiques sont celles qui utilisent des « + » à tout les coins, des tirets pour les lignes horizontales et des pipes pour les lignes verticales.
    En effet c'est la grande classe , moi en console je me contente d'un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #include <stdio.h>
     
    /* commentaires pour "restarr" */
     
    int main(void)
    {
    	int a[4][4] = {{0}};
    	size_t i, j;
     
    	/* boucles inbriquées servant en quelque sorte à
    	   tracer les lignes et les colonnes de ta matrice */
     
    	for (i = 0; i < 4; i++)
    	{
    		for (j = 0; j < 4; j++)
    		{
    			/* intercale un Alt Gr - 6 entre chaque
    			   valeur d'une même ligne */
    			printf("%2d |", a[i][j]);
    		}
    		/* quand une ligne est affichée, on passe à la 
    		   suivante en la séparant par une rangée de tirets */
    		puts("\n----------------");
    	}
     
    	return 0;
    }

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 5
    Par défaut
    Merci beaucoup pour le code et les explications
    Je voudrais pas abuser(je suis vraiment chiant),mais pourrais tu m'expliquer comment le faire avec des caracteres de la table ascii et pour qu'ils forment une grille compacte(sans espaces entre les traits).
    Car j'avais vu une fois l'éxécution d'un programme de quelqu'un qui avait vraiment une grille,mais je ne sais malheureusement pas le faire.

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Le code ASCII au sens strict ne concerne que les caractères de 0 à 127 (sur 7 bits, donc). Et encore, toutes les plateformes ne le respectent pas à la lettre.

    Si par « E9 », tu entends l'espèce de cornière double supérieure gauche « ╔ », il s'agit en fait du caractère C9, et cela dépend de la page de code que tu utilises. En l'occurence, ces caractères sont déclarés dans la page de code 437 de l'IBM PC. On les retrouve encore dans la page 850 utilisée en Europe, mais en nombre limité.

    Ce n'est donc absolument pas portable, même en restant sur PC, voire même en restant sous Windows. À moins bien sûr d'utiliser l'UTF-8 (Unicode inclut ces glyphes), ce qui me permet d'afficher ce caractère sur le Web, mais rares sont les consoles qui le gèrent pleinement.

    Si toutefois, tu tiens à le faire quand même, tu as plusieurs choix :

    • Soit tu saisis directement le caractère en maintenant ALT enfoncée et en tapant le code décimal, ici « 201 », sur le pavé numérique, mais je ne sais pas si ça fonctionne encore ;
    • Soit tu copies-colles dans ta chaîne les caractères en question, mais si tu le fais depuis le Web, il est probable que ta machine ne fasse pas la conversion automatiquement ;
    • Soit tu insères « %c » dans ta chaîne et tu passes le numéro du caractère en argument.

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  2. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00
  3. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 11h36
  4. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo