/* File: frase.c */
/* Scopo: utilizzo di vettori di stringhe */

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <time.h>

#define NPAR 5

char *article[NPAR] =     {"the", "a", "one", "some", "any"};
char *noun[NPAR] =        {"boy", "girl", "dog", "town", "car"};
char *verb[NPAR] =        {"drove", "jumped", "ran", "walked", "skipped"};
char *preposition[NPAR] = {"to", "from", "over", "under", "on"};


void GeneraFrase(char frase[]);

int main (void)
{
  char frase[200];
  int i;
	
  printf("Generazione di 20 frasi casuali (premere invio dopo ogni frase)\n\n");
  for (i = 1; i <= 20; i++) {
    GeneraFrase(frase);
    puts(frase);
    getchar();
  }
	
  return 0;
}


void GeneraFrase(char fr[])
{
  char *s;

  /* imposta il seed per il generatore pseudocasuale di numeri */
  srand(time(NULL));
	
  /* scegli casualmente un elemento da article, converti la prima
     lettera in maiuscolo, mettilo nel vettore frase e aggiungi uno spazio */
  s = article[rand() % NPAR];
  strcpy(fr, s);
  fr[0] = toupper(fr[0]);
  strcat(fr, " ");
	
  /* scegli casualmente un elemento da noun */
  s = noun[rand() % NPAR];
  strcat(fr, s);
  strcat(fr, " ");
	
  /* scegli casualmente un elemento da verb */
  s = verb[rand() % NPAR];
  strcat(fr, s);
  strcat(fr, " ");
	
  /* scegli casualmente un elemento da preposition */
  s = preposition[rand() % NPAR];
  strcat(fr, s);
  strcat(fr, " ");
	
  /* scegli casualmente un elemento da article */
  s=article[rand() % NPAR];
  strcat(fr, s);
  strcat(fr, " ");
	
  /* scegli casualmente un elemento da noun e aggiungi un punto finale*/
  s=noun[rand() % NPAR];
  strcat(fr, s);
  strcat(fr, ".");
}