Testo dell'esercizio
Una gara di sci e' disputata in due manche e al termine delal seconda si sommano i tempi per determinare l'atleta che ha vinto al gara.
I vettori TEMPI1 e TEMPI2 contengono i tempi di gara di ciscuna delle due manches, mentre il vettore ATLETI contiene il nome delgi atleti.
Prevedere un'applicazione che permetta di:
1) visualizzare la classifica finale (piazzamento, nome, tempo totale) in ordine decrescente di tempo
2) dato n input il nome di un atleta visualiizzare i tempi delle due manches, il tempo totale e il suo piazzamento. Emettere opportuna segnalazione di errore se il nome dell'atleta non esiste nell'array
3) prevedere la segnalazione del controllo antidoping nella seconda manches per 10 atleti.
Con una funzione random e' determinata la posizione dell'atleta che deve essere controllato.Poi si richiede da input il risultato dell'analisi che puo' essere grave, lieve, negativo. Se e' grave vengono aggiunti 5 secondi di penalita' al tempo totale, se e' lieve solamente 1.5. Aggiornare l'array TEMPI2.
mostra soluzione
/*
CLAUDIO CARDINALE III AI
Una gara di sci e' disputata in due manche e al termine delal seconda si sommano i tempi per determinare l'atleta che ha vinto al gara.
I vettori TEMPI1 e TEMPI2 contengono i tempi di gara di ciscuna delle due manches, mentre il vettore ATLETI contiene il nome delgi atleti.
Prevedere un'applicazione che permetta di:
1) visualizzare la classifica finale (piazzamento, nome, tempo totale) in ordine decrescente di tempo
2) dato n input il nome di un atleta visualiizzare i tempi delle due manches, il tempo totale e il suo piazzamento. Emettere opportuna segnalazione di errore se il nome dell'atleta non esiste nell'array
3) prevedere la segnalazione del controllo antidoping nella seconda manches per 10 atleti.
Con una funzione random e' determinata la posizione dell'atleta che deve essere controllato.Poi si richiede da input il risultato dell'analisi che puo' essere grave, lieve, negativo. Se e' grave vengono aggiunti 5 secondi di penalita' al tempo totale, se e' lieve solamente 1.5. Aggiornare l'array TEMPI2.
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define MAX 1000
int main(){
//dichiarazioni
char atleti[MAX][MAX],nome[MAX],risultato_c;
int r,i,j,ordinati[MAX],k,p,aux,controllo;
float tempi1[MAX],tempi2[MAX],tempi_t[MAX],n;
//acquisizione dati
//lunghezza vettori
do{
printf("inserire il numero di atleti : ");
scanf("%d",&r);
}while(r < 1 || r >= MAX);
//acquisizione dati
//atleti
for(i=0;i<r;i++){
printf("inserisci il nome del'altleta numero %d : ",i+1);
getchar();
scanf("%s",atleti[i]);
}
//tempi1
for(i=0;i<r;i++){
printf("inserisci il tempo della prima manche dell'atleta %s : ",atleti[i]);
scanf("%f",&tempi1[i]);
}
//tempi2
for(i=0;i<r;i++){
printf("inserisci il tempo della seconda manche dell'atleta %s : ",atleti[i]);
scanf("%f",&tempi2[i]);
}
//calcoli e visualizzazione risultati
//1°
for(i=0;i<r;i++){
tempi_t[i] = tempi1[i]+tempi2[i];
ordinati[i] = i;
}
n = r;
do{
k = 0;
for(i=0;i<n-1;i++)
if(tempi_t[ordinati[i]]>tempi_t[ordinati[i+1]]){
aux = ordinati[i];
ordinati[i] = ordinati[i+1];
ordinati[i+1] = aux;
p = i+1;
k = 1;
}
n = p;
}while(k);
printf("classifica :\n");
for(i=0;i<r;i++)
printf("%d\t%s\t%f\n",i+1,atleti[ordinati[i]],tempi_t[ordinati[i]]);
//2°
printf("inserire il nome di un atleta : ");
getchar();
scanf("%s",nome);
i=0;
while(i < r && strcmp(atleti[i],nome))
i++;
if(!strcmp(atleti[i],nome)){
j = 0;
while(i != ordinati[j])
j++;
printf("alteta %s : tempo manche 1 = %f, tempo manche 2 = %f; tempo totale = %f; piazzamento = %d\n",nome,tempi1[i],tempi2[i],tempi_t[i],j+1);
}else
printf("ERRORE : l'altleta inserito non esiste\n");
//3°
//inizializzazione e numero pseudo-casuale
srand(time(NULL));
controllo = rand()%r;
printf("inserire il risultato del controllo antidoping all'atleta %s(g = grave, l = lieve, n = negativo) : ",atleti[controllo]);
getchar();
scanf("%c",&risultato_c);
if(risultato_c == 'g')
tempi2[controllo] += 5;
else if(risultato_c == 'l')
tempi2[controllo] += 1.5;
}
Testi Consigliati:
Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C
torna