/* quadreto.c * Linguaggi e Traduttori * Prof. Ing. Stefano Salvi * Lezione 2a * * Esercizio 1; * Scrivere un programma che stampi la seguente figura: * * ********** * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * ** * ********** */ #include <stdio.h> #define LATO 10 /* La funzione 'riga' stampa una riga di '*' lunga 'massimo' * elementi. * La riga 0 e la riga 'massimo - 1' saranno piene * Nelle altre righe saranno '*' il primo elemento, quello d'indice 'massimo - 1' * e quello il cui indice corrisponde con il numero di riga. */ void riga (int numero, int massimo) { int i; if (numero == 0 || numero == massimo - 1) { /* Prima ed ultima riga */ for (i = 0; i < massimo; i++) putchar ('*'); } else { /* Ogni altra riga */ putchar ('*'); /* Stampo il primo asterisco */ /* ATTENZIONE: Ciclo dal SECONDO al PENULTIMO !! */ for (i = 1; i < massimo -1; i++) if (i == numero) /* Se siamo sulla diagonale */ putchar ('*'); /* Stampo '*' */ else /* Altrimenti */ putchar (' '); /* Stampo ' ' */ putchar ('*'); /* Stampo l'ultimo asterisco */ } putchar ('\n'); } /* Funzione principale: * Si limita a chiamare la funzione 'riga' per ognuna delle righe * Si noti che utilizza la macro LATO per la dimensione. * Cambiando questa costante, si possono fare quadrati di qualunque dimensione */ int main () { int i; for (i = 0; i < LATO; i++) riga (i,LATO); return 0; }