Partage
  • Partager sur Facebook
  • Partager sur Twitter

Je n'arrive pas à afficher une grille en C

    6 janvier 2022 à 17:31:49

    Bonjour, 

    Je suis très débutant en c et j'ai envie d'afficher une grille de 4 lignes et de 8 colonnes avec des caractères de la table ANSI. 

    Ce que je veux créer c'est une forme de tableau constitué de 32 carrés. 

    Voici le code que j'ai fait pour la première ligne:

    int main ()
    
    {
    
      for(int i = 0; i<8; i++){
    
    printf("%c%c%c%c%c%c%c%c%c%c",0xC9,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xBB);
    
    }
    
    printf("\n");
    
    for(int j = 0; j<8; j++){
    
    printf("%c       %c ", 0xBA, 0xBA); //répéter 8fois 
    
    }
    
    printf("\n");
    
    for(int k = 0; k<8; k++){
    
    printf("%c%c%c%c%c%c%c%c%c%c",0xC8,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xBC);
    
    }
    
    printf("\n");
    
      return 0;
    
    }



    Mais je n'arrive plus à faire de mieux 

    -
    Edité par Pseudokk 8 janvier 2022 à 12:07:48

    • Partager sur Facebook
    • Partager sur Twitter
      6 janvier 2022 à 17:33:51

      Utilises le bouton code </> du forum pour poster ton code ! (tu peux modifier ton post, lien modifier en haut à droite du post).
      • Partager sur Facebook
      • Partager sur Twitter
        6 janvier 2022 à 18:13:57

        Bonjour,

        Tout d'abord tu n'a pas inclus stdio il faut donc le faire pour pouvoir utiliser la fonction printf

        #include <stdio.h>

        Ensuite au niveau de la ligne où tu fais 

        printf("%c%c%c%c%c%c%c%c%c%c",0xC9,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xBB);

        tu as 10 %c et seulement 9 arguments, après pareil au niveau de cette ligne 

        printf("%c%c%c%c%c%c%c%c%c%c",0xC8,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xBC);

        tu peux donc modifier ça, il faudra donc ensuite modifier le nombre d'espaces pour cette ligne

        printf("%c       %c ", 0xBA, 0xBA);

        Ensuite tu n'as plus qu'a faire boucler ton code 4 fois comme cela pour obtenir ton tableau 8x4 

        #include <stdio.h>
        
        int main (){
        	for (int j = 0; j < 4; ++j){
        
        		for(int i = 0; i<8; i++){
        		printf("%c%c%c%c%c%c%c%c%c",0xC9,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xBB);
        		}
        		printf("\n");
        
        		for(int i = 0; i<8; i++){
        			printf("%c       %c", 0xBA, 0xBA); //répéter 8fois 
        		}
        		printf("\n");
        
        		for(int i = 0; i<8; i++){
        			printf("%c%c%c%c%c%c%c%c%c",0xC8,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xCD,0xBC);
        		}
        		printf("\n");
        	}
        	return 0;
        }

        Et tu obtiendras donc ton tableau

        ╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗
        ║       ║║       ║║       ║║       ║║       ║║       ║║       ║║       ║
        ╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝
        ╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗
        ║       ║║       ║║       ║║       ║║       ║║       ║║       ║║       ║
        ╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝
        ╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗
        ║       ║║       ║║       ║║       ║║       ║║       ║║       ║║       ║
        ╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝
        ╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗╔═══════╗
        ║       ║║       ║║       ║║       ║║       ║║       ║║       ║║       ║
        ╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝╚═══════╝





        -
        Edité par Theau.B 6 janvier 2022 à 18:14:59

        • Partager sur Facebook
        • Partager sur Twitter
          6 janvier 2022 à 18:19:20

          Hello,

          Il y a un %c en trop dans le premier et le dernier printf() ....

          • Partager sur Facebook
          • Partager sur Twitter

          Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....

            6 janvier 2022 à 18:46:44

            Peut-être que tu ne connais pas la fonction  putchar(). Elle permet d'envoyer un caractère à la console.
            Pour tes printf, même si ça semble faire beaucoup de boucles, pourquoi ne pas faire des choses du genre:
            printf("%c", 0xce);
            for(int z=0; z<6; z++) printf("%c", 0xcd);
            printf("%c", 0xce);
            Tu ne fera pas d'erreur sur le nombre d'arguments
            Avec putchar, on pourrait écrire  putchar(0xce);
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              6 janvier 2022 à 20:19:33

              Une autre solution "paramétrable"
              #include <stdio.h>
              
              #define NLINES				4
              #define NROWS				8
              #define CELL_WIDTH			12
              #define CELL_HEIGHT			4
              #define C_HORZ				0xcd
              #define C_VERT				0xba
              #define C_BLANK				' '
              #define CROSS				0xce
              #define ANGLE_LEFT_UP		0xc9
              #define ANGLE_RIGHT_UP		0xbb
              #define ANGLE_LEFT_DOWN		0xc8
              #define ANGLE_RIGHT_DOWN	0xbc
              #define CON_UP_DOWN			0xcb
              #define CON_DOWN_UP			0xca
              #define CON_LEFT_RIGHT		0xcc
              #define CON_RIGHT_LEFT		0xb9
              
              
              void DisplayCellSep(void) {
              	for(int i=0;i<CELL_WIDTH;i++)
              		putchar(C_HORZ);
              }
              
              
              void DisplayFirstLine(void) {
              	putchar(ANGLE_LEFT_UP);
              	for(int i=0;i<NROWS;i++) {
              		DisplayCellSep();
              		if(i<NROWS-1)
              			putchar(CON_UP_DOWN);
              	}
              	printf("%c\n",ANGLE_RIGHT_UP);
              }
              
              
              void DisplayLastLine(void) {
              	putchar(ANGLE_LEFT_DOWN);
              	for(int i=0;i<NROWS;i++) {
              		DisplayCellSep();
              		if(i<NROWS-1)
              			putchar(CON_DOWN_UP);
              	}
              	printf("%c\n",ANGLE_RIGHT_DOWN);
              }
              
              
              void DisplayMidLine1(void) {
              	for(int i=0;i<CELL_HEIGHT;i++) {
              		putchar(C_VERT);
              		for(int j=0;j<NROWS;j++) {
              			for(int k=0;k<CELL_WIDTH;k++)
              				putchar(C_BLANK);
              			putchar(C_VERT);
              		}
              		putchar('\n');
              	}
              }
              
              
              void DisplayMidLine2(void) {
              	putchar(CON_LEFT_RIGHT);
              	for(int i=0;i<NROWS;i++) {
              		DisplayCellSep();
              		if(i<NROWS-1)
              			putchar(CROSS);
              	}
              	printf("%c\n",CON_RIGHT_LEFT);
              }
              	
              
              int main (void) {
              	DisplayFirstLine();
              	for(int i=0;i<NLINES;i++) {
              		DisplayMidLine1();
              		if(i<NLINES-1)
              			DisplayMidLine2();
              	}
              	DisplayLastLine();
              	
              	return 0;
              
              }


              edit: ortho

              -
              Edité par edgarjacobs 7 janvier 2022 à 0:09:57

              • Partager sur Facebook
              • Partager sur Twitter

              Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....

              Je n'arrive pas à afficher une grille en C

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown