Accedi

Formula 1 dei vettori (senza nomi)

PROBLEMA

Una gara automobilistica si è disputata con 15 piloti. In un vettore nomi[] memorizzati i nomi dei piloti e in un vettore posizione[] la posizione di arrivo. Inserire da tastiera un nominativo e visualizzare a schermo la posizione.


TABELLA DATI

IDENTIFICATORE DESCRIZIONE
nomi[] nomi dei piloti di tipo char variabile
nome_utente[0][256] nome utente del sistema di tipo char costante
nome_utente[1][256] nome utente al momento dell’inserimento di tipo char variabile
password[0][256] password del sistema  di tipo char costante
password[1][256] password al momento dell’inserimento  di tipo char variabile
nome_scelto[256] nome scelto nella lista dei partecipanti di tipo char variabile
nome_controllo[256] variabile d’appoggio per rendere un nome della lista da esaminare con quello inserito tutto maiuscolo di tipo char variabile
char_ripetere variabile che contiene y/n per il reinserimento di un nome di tipo char variabile
posizioni[] contiene le posizioni del rispettivo partecipante di tipo intero variabile
a[] contiene dei numeri casuali per mostrare a video una lista casuale, solo per l’utente di tipo intero variabile
accesso serve per consentire l’accesso alla zona admin di tipo intero variabile
congruenza serve per determinare se due stringhe sono uguali di tipo intero variabile
i indici di tipo intero variabile
j indici di tipo intero variabile
menu inserimento della scelta del menudi tipo char variabile
NUMERO_PARTECIPANTI numero di partecipanti di tipo intero variabile

 


DIAGRAMMA A BLOCCHI

Clicca qui per visualizzare il Diagramma a blocchi.


CODICE SORGENTE

#include
#include
#include
#include
#define NUMERO_PARTECIPANTI 15

int main(int argc, char *argv[]){
 //sezione dichiarativa
 srand(time(NULL));
 char nomi[NUMERO_PARTECIPANTI][256]={{"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}, {"NULL"}};
 char nome_utente[2][256]={{"admin"}, {"NULL"}};
 char password[2][256]={{"admin"}, {"NULL"}};
 char nome_scelto[256];
 char nome_controllo[256];
 char ripetere;
 int posizioni[NUMERO_PARTECIPANTI]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
 int a[NUMERO_PARTECIPANTI];
 int accesso=0, congruenza, i, j, menu;
 //messaggio a video
 printf("[!]Il programma deve essere compilato dal un datore di lavoro\n   con nominativi e posizioni nella parte dedicata 'Admin Login'\n[!] Successivamente l'untente puo' accedere nella sua sezione\n   denominata 'Pubblic login'\n\n   Premi un tasto per continuare . . ");
 getch();
 do{ //se la scelta del primo menu e' 3 chiude il programma
  //sezione di input
  system("cls");
  printf("----------------------------------------\n1. Admin Login\n2. Pubblic Login\n3. Esci\n----------------------------------------\n>");
  menu=getch();
  //menu 1
  switch(menu){
   case'1': //scelta admin login
    //sezione di input
    system("cls");
    printf("----------------------------------------\nUser: ");
    fflush(stdin);
    gets(nome_utente[1]);
    printf("Password: ");
    fflush(stdin);
    gets(password[1]);
    printf("----------------------------------------\n");
    //controllo congruenza password
    congruenza=-1;
    accesso=0;
    congruenza=strcmp(nome_utente[1], nome_utente[0]);
    if(congruenza==0)
     accesso=1;
    congruenza=-1;
    congruenza=strcmp(password[1], password[0]);
    if(congruenza==0)
     accesso++;     
    if(accesso!=2){ //se la password non è confermata
     for(i=3;i>=0;i--){
      system("cls");
      printf("----------------------------------\nCredenziali errate attendi [%i] secondi\n----------------------------------\n>", i);
      sleep(1);
     }
    }
    else if(accesso==2){ //se la password è confermata
     do{ //se la scelta del menu in questione e' 4 conferma le operazioni
      //sezione di input
      system("cls");
      printf("----------------------------------------\n1. Inserire nomi\n2. Inserire posizioni\n3. Visualizza lista\n4. Conferma\n----------------------------------------\n>");
      menu=getch();
      //menu
      switch(menu){
       case'1': //secelta di inserire i nomi
        //sezione di input dei nomi
        system("cls");
        printf("----------------------------------------\n");
        for(i=0;i          printf("Pilota Numero %i:\n>", i+1);
         fflush(stdin);
         gets(nomi[i]);
        }
        printf("--------!Salvataggio Effettuato!--------\n");
        sleep(3);
        break;
       case'2': //scelta di inserire le posizioni
        //sezione input delle posizioni
        system("cls");
        printf("----------------------------------------\n");
        for(i=0;i          do{ //se la posizione non è valida
          printf("Classificazione di ");
          puts(nomi[i]);
          printf(">");
          scanf("%i", &posizioni[i]);
         }while(posizioni[i]<=0 || posizioni[i]>NUMERO_PARTECIPANTI); //rig. 83
        }
        printf("--------!Salvataggio Effettuato!--------\n");
        sleep(3);
        break;
       case'3': //scelta visualizzazione lista
        //sezione di output di nomi e poszioni
        system("cls");
        printf("----------------------------------\n--------!Lista Partecipanti !-----\n----------------------------------\n\tPosizione   Nome\n");
        for(i=0;i          printf("\t| %i\t    ", posizioni[i]);
         puts(nomi[i]);
        }
        printf("----------------------------------\nPremi un tasto per continuare . . .\n>");
        getch();
        break;
      }
     }while(menu!='4'); //rig. 59
    }
    break;
   case'2': //scelta user login
    //assegnare una posizione casuale per visualizzare i nomi nell'elenco
    for(i=0;i      a[i]=rand()%15;
     for(j=0;j       if(a[i]==a[j]){
       i--;
       break;
      }
     }
    }
    do{ //se ricerca di un altro pilota/partecipante
     do{ //se il nome non è presente
      //sezione di output della lista
      system("cls");
      printf("----------------------------------\n--------!Lista Partecipanti!------\n----------------------------------\n");
      for (i=0;i        printf("\t| %i. ", i+1);
       puts(nomi[a[i]]);
      }
      //sezione di input del nome da analizzare
      printf("----------------------------------\nInserire il nome del pilota per\nvisualizzarne la posizione.\n----------------------------------\n>");
      fflush(stdin);
      gets(nome_scelto);
      system("cls");
      //sezione di controllo del nome
      i=0;
      congruenza=-1;
      do{ //controllo di ogni nome della lista fino a quando non trova la congreunza oppure non raggiungere il numero massimo di partecipanti
       strcpy(nome_controllo,nomi[i]);
       congruenza=strcmp(strupr(nome_controllo), strupr(nome_scelto));
       if(congruenza==0){ //se è presente
        printf("---------!Pilota scelto!----------\nNome: %s \nPosizione: %i\n----------------------------------\nPremi un tasto per continuare . . .\n>", nomi[i], posizioni[i]);
        getch();
       }
       i++;
      }while(congruenza!=0 && i       if(congruenza!=0){ //se non è presente
       for (i=3;i>=0;i--){
        system("cls");
        printf("----------------------------------\nNome errato attendi [%i] secondi\n----------------------------------\n>", i);
        sleep(1);
       }
      }
     }while(congruenza!=0); //rig. 120
     do{ //se l'input inserito è diverso da 'y' o 'n' lo richiede
      //sezione di input se si vuole controllare un altro nome
      system("cls");
      printf("----------------------------------\nSi vuole cercare un altro\npartecipante? (y/n)\n----------------------------------\n>");
      ripetere=getch();
      if((ripetere!='y') && (ripetere!='n')){ //se l'input inserito è diverso da 'y' o 'n'
       for (i=3;i>=0;i--){
        system("cls");
        printf("----------------------------------\nIn-put errato attendi [%i] secondi\n----------------------------------\n>", i);
        sleep(1);
       }
      }
     }while((ripetere!='y') && (ripetere!='n')); //rig. 153
    }while(ripetere!='n'); //rig. 119
    break;
   case'3': //uscita del programma
    system("cls");
    for (i=0;i<5;i++){
     printf("Grazie di aver utilizzato il programma\n\n");
     sleep(1);
    }
    break;
  }
 }while(menu!='3'); //rig. 24
 return 0;
}