/* 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;
}