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;
}