/* File: password.c */
/* Scopo: utilizzo di vettori e stringhe */

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

#include <stdio.h>

#define max_pasw 5
#define lung_pasw 6

void fine(void);


int main(void)
{
  char psw_note[max_pasw][lung_pasw] = {"primaa",
                                        "second",
                                        "terzaa",
                                        "quarta",
                                        "quinta"};
  char password[lung_pasw];
  int i, j;
  int ok;            /* conta il numero di caratteri corretti della password */
  int accesso = 0;   /* booleana che specifica se l'accesso e` consentito;
                        inizialmente NON lo e` */

  printf("\n\tQUESTO E' UN SISTEMA AD\n\tACCESSO CONTROLLATO\n\n");

  printf("Inserire login: [esattamente %d caratteri]: ", lung_pasw);

  for (i = 0; i < lung_pasw; i++)         /* considera solo i primi lung_pasw
                                             caratteri della password */
    password[i] = getchar();

  getchar();                                                /* assorbe invio */

  for (i = 0; i < max_pasw; i++) {
    ok = 0;
    for (j = 0; j < lung_pasw; j++)
      if (password[j] == psw_note[i][j])
        /* NOTA: in alternativa potrei usare
                   *(password+j) == *(psw_note[i]+j)
                 ma e` piu` leggibile la notazione con indice
        */
        ok++;

    if (ok == lung_pasw) accesso = 1;                   /* concedo l'accesso */
  }

  if (accesso)
    printf("Login CORRETTA\n");
  else
    printf("Login NON CORRETTA\n");
  /* while (loop) ; */                   /* loop infinito - blocca il sitema */

  fine();

  return 0;
}


void fine(void)
{
  printf("\ninvio  per finire\n");
  while (getchar() != '\n');
}