/* File: password.c */
/* Time-stamp: "2002-05-14 13:24:02 calvanes" */
/* Scopo: utilizzo di vettori e stringhe */

/* Riconosce una password (stringa) in un insieme predefinito di password note
   di lunghezza variabile.
*/

#include <stdio.h>

#define NUMPASW 5
#define MAXLUNG 8


int uguali(char *s1, char *s2)
{
  int i;
  int ug = 1;      /* assumo che le due stringhe siano uguali */
  for (i = 0; ug && s1[i] != '\0' && s2[i] != '\0'; i++)
    if (s1[i] != s2[i])
      ug = 0;                             /* la due stringhe non sono uguali */
  return s1[i] == '\0' && s2[i] == '\0';
}


int main(void)
{
  char *psw_note[NUMPASW] = {"prima",
                             "seconda",
                             "terza",
                             "quarta",
                             "quinta"};
  char password[MAXLUNG + 1];
  char ch;
  int i, j;
  int accesso = 0;      /* booleana che specifica se l'accesso e` consentito;
                           inizialmente NON lo e` */

  printf("Inserire password: [al piu` %d caratteri]: ", MAXLUNG);

  ch = getchar();
  for (i = 0; (i < MAXLUNG) && (ch != '\n'); i++) {
    password[i] = ch;
    ch = getchar();
  }
  password[i] = '\0';                       /* sovrascrive l'eventuale "\n' */

  if (ch != '\n') {
    scanf("%*[^\n]");              /* assorbe i caratteri in piu` sulla riga */
    getchar();                                              /* assorbe invio */
  }

  for (i = 0; (!accesso) && i < NUMPASW; i++)
    accesso = uguali(password, psw_note[i]);

  if (accesso)
    printf("Password CORRETTA\n");
  else
    printf("Password NON CORRETTA\n");

  return 0;
}