Accedi

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