Formula 1 dei vettori (con 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 |
---|---|
nome_scelto[256] | nome scelto dall’utente di tipo char variabile |
ripetere | controllo per far ripetere all’utente l’immissione di un altro nome di tipo char variabile |
nomi[][] | nomi dei partecipanti di tipo char costante |
i | indice di tipo intero variabile |
j | indice di tipo intero variabile |
congruenza | verifica uguaglianza del nome di tipo intero variabile |
a[] | vettore con posizioni per rendere la visualizzazione della lista casuale di tipo intero variabile |
posizioni | posizioni dei partecipanti di tipo intero variabile |
NUMERO_PARTECIPANTI | numero di partecipanti di tipo intero costante |
DIAGRAMMA A BLOCCHI
Clicca qui per visualizzare il Diagramma a blocchi.
CODICE SORGENTE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define NUMERO_PARTECIPANTI 15
int main(int argc, char *argv[]){
//sezione dichiarativa
srand(time(NULL));
char nome_scelto[256];
char ripetere;
char nomi[NUMERO_PARTECIPANTI][256]={{"HAMILTON"}, {"BOTTAS"}, {"VERSTAPPEN"}, {"PEREZ"}, {"RICCIARDO"}, {"SAINZ"}, {"ALBON"}, {"LECLERC"}, {"NORRIS"}, {"GASLY"}, {"STROLL"}, {"OCON"}, {"VETTEL"}, {"KVYAT"}, {"HULKENBERG"}};
int i, j, congruenza;
int a[NUMERO_PARTECIPANTI];
int posizioni[NUMERO_PARTECIPANTI]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
//for per assegnare una posizione casuale all'interno della lista
for(i=0;i<NUMERO_PARTECIPANTI;i++) {
a[i]=rand()%15;
for(j=0;j<i;j++) {
if(a[i]==a[j]) {
i--;
break;
}
}
}
do{ //se si vuole reinserire un partecipante
do{ //se il nome non è presente
//stampa a video della lista
system("cls");
printf("----------------------------------\n");
printf("--!Lista Partecipanti F1 2020!--\n");
printf("----------------------------------\n");
for (i=0;i<NUMERO_PARTECIPANTI;i++){
printf("\t| %i. %s\n", i+1, nomi[a[i]]);
}
printf("----------------------------------\n");
//sezione di in-put
printf("Inserire il nome del pilota per\nvisualizzarne la posizione.\n");
printf("----------------------------------\n>");
gets(nome_scelto);
system("cls");
//sezione controllo del nome
i=0;
congruenza=-1;
do {
congruenza=strcmp(strupr(nomi[i]), strupr(nome_scelto));
if (congruenza==0) {
printf("---------!Pilota scelto!----------\n");
printf("Nome: %s \nPosizione: %i\n", nomi[i], posizioni[i]);
printf("----------------------------------\n");
printf("Premi un tasto per continuare . . .\n>");
getch();
}
i++;
}while(congruenza!=0 && i<NUMERO_PARTECIPANTI);
//se non è presente una cogruenza nei nomi
if (congruenza!=0) {
for (i=3;i>=0;i--){
system("cls");
printf("----------------------------------\n");
printf("Nome errato attendi [%i] secondi\n", i);
printf("----------------------------------\n>");
sleep(1);
}
}
}while(congruenza!=0);
//sezione di in-put
do{
system("cls");
printf("----------------------------------\n");
printf("Si vuole cercare un altro\npartecipante? (y/n)\n");
printf("----------------------------------\n>");
ripetere=getch();
if ((ripetere!='y') && (ripetere!='n')){
for (i=3;i>=0;i--){
system("cls");
printf("----------------------------------\n");
printf("In-put errato attendi [%i] secondi\n", i);
printf("----------------------------------\n>");
sleep(1);
}
}
}while((ripetere!='y') && (ripetere!='n'));
}while(ripetere!='n');
//sezione di out-put
system("cls");
for (i=0;i<5;i++){
printf("Grazie di aver utilizzato il programma\n\nvisita la mia pagina web\n\n");
sleep(1);
}
return 0;
}