using System; namespace tests { class MainClass { /* Affiche le caractere c */ public static void afficheCaractere(char c) { Console.Write(c + " "); } /*****************************************/ /* affiche n fois le caractere c, ne revient pas a la ligne apres le dernier caractere. */ public static void ligneSansReturn(int n, char c) { for(int i = 1 ; i <= n ; i++) afficheCaractere(c); } /*****************************************/ /* affiche n fois le caractere c, revient a la ligne apres le dernier caractere. */ public static void ligneAvecReturn(int n, char c) { ligneSansReturn(n, c); Console.WriteLine(); } /*****************************************/ /* Affiche n espaces. */ public static void espaces(int n) { ligneSansReturn(n, ' '); } /*****************************************/ /* Affiche le caractere c a la colonne i, ne revient pas a la ligne apres. */ public static void unCaractereSansReturn(int i, char c) { espaces (i - 1); afficheCaractere(c); } /*****************************************/ /* Affiche le caractere c a la colonne i, revient a la ligne apres. */ public static void unCaractereAvecReturn(int i, char c) { unCaractereSansReturn(i, c); Console.WriteLine(); } /*****************************************/ /* Affiche le caractere c aux colonnes i et j, revient a la ligne apres. */ public static void deuxCaracteres(int i, int j, char c) { unCaractereSansReturn(i, c); unCaractereAvecReturn(j - i, c); } /*****************************************/ /* Affiche un carre de cote n. */ public static void carre(int n) { ligneAvecReturn(n, '*'); for (int i = 1 ; i <= n-1 ; i++) deuxCaracteres(1, n, '*'); ligneAvecReturn(n, '*'); } /*****************************************/ /* Affiche un chapeau dont la pointe - non affichee - est sur la colonne centre, avec les caracteres c. */ public static void chapeau(int centre, char c) { int i = centre - 1; int j = centre + 1; while (i >= 2) { deuxCaracteres(i, j, c); i--; j++; } } /*****************************************/ /* Affiche un chapeau a l'envers avec des caracteres c, la pointe - non affichee - est a la colonne centre */ public static void chapeauInverse(int centre, char c) { int i = 2; int j = 2*(centre - 1); while(i+1 < j) { deuxCaracteres(i, j, c); i++; j--; } } /*****************************************/ /* Affiche un losange de cote n. */ public static void losange(int n) { unCaractereAvecReturn(n, '*'); chapeau(n, '*'); deuxCaracteres(1, 2*n - 1, '*'); chapeauInverse(n, '*'); unCaractereAvecReturn(n, '*'); } /*****************************************/ /* Affiche une croix de cote n */ public static void croix(int n) { deuxCaracteres(1, 2*n - 1, '*'); chapeauInverse(n, '*'); unCaractereAvecReturn(n, '*'); chapeau(n, '*'); deuxCaracteres(1, 2*n - 1, '*'); } /*****************************************/ public static void Main() { int taille; Console.WriteLine("Saisissez la taille des figures : "); taille = int.Parse(Console.ReadLine()); carre(taille); losange(taille); croix(taille); } } }