/* File: figure2.c */

/* Permette all'utente di stampare su schermo figure geometriche.  L'utente
   interagisce con il programma tramite una semplice interfaccia.  E' possibile
   scegliere solamente la forma della figura da stampare (quadrato o
   triangolo).

   Scopo: esempio di uso di funzioni
   (con variabili locali e senza parametri) */

#define ALTEZZA 9

void StampaQuadrato(void)
{
  int i, j;  /* i e j sono variabili locali!!! */

  for(i = 1; i <= ALTEZZA; i++) {
    for(j = 1; j <= ALTEZZA; j++)
      printf("*");
    printf("\n");
  }
}

void StampaTriangolo(void)
{
  int i, j;  /* i e j sono variabili locali!!! */

  for(i = 1; i <= ALTEZZA; i++) {

    for(j = 1; j <= ALTEZZA - i ; j++)
      printf(" ");

    for(j = 1; j <= 2*i - 1 ; j++)
      printf("*");

    printf("\n");

  }
}

void StampaSaluto(void)
{
  printf("Ho finito!\n");
}

int main(void)
{
  char ch;
  do {
    printf("\nIMMETTI UN CARATTERE A SCELTA FRA I SEGUENTI\n");
    printf("q: stampa un quadrato\n");
    printf("t: stampa un triangolo\n");
    printf("f: per terminare il programma: ");
    scanf("%c", &ch); getchar();
    switch(ch) {
      case 'q' : StampaQuadrato(); break;
      case 't' : StampaTriangolo(); break;
      case 'f' : StampaSaluto(); break;
    }
  } while (ch != 'f');
  return 0;
}
