logo Thecsea.it



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License



scolastica » esercizi » terza superiore » linguaggio c

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

001/*
002CLAUDIO CARDINALE III AI
003Una 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.
004I vettori TEMPI1 e TEMPI2 contengono i tempi di gara di ciscuna delle due manches, mentre il vettore ATLETI contiene il nome delgi atleti.
005Prevedere un'applicazione che permetta di:
0061) visualizzare la classifica finale (piazzamento, nome, tempo totale) in ordine decrescente di tempo
0072) 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
0083) prevedere la segnalazione del controllo antidoping nella seconda manches per 10 atleti.
009Con 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.
010*/
011#include<stdio.h>
012#include<stdlib.h>
013#include<time.h>
014#define MAX 1000
015int main(){
016     
017    //dichiarazioni
018     
019    char atleti[MAX],nome,risultato_c;
020    int r,i,j,ordinati[MAX],k,p,aux,controllo;
021    float tempi1[MAX],tempi2[MAX],tempi_t[MAX],n;
022     
023     
024    //acquisizione dati
025     
026    //lunghezza vettori
027    do{
028        printf("inserire il numero di atleti : ");
029        scanf("%d",&r);
030    }while(r < 1 || r >= MAX);
031     
032    //acquisizione dati
033     
034    //atleti
035     
036    for(i=0;i<r;i++){
037        printf("inserisci il nome del'altleta numero %d : ",i+1);
038        getchar();
039        scanf("%c",&atleti[i]);
040    }
041     
042    //tempi1
043     
044    for(i=0;i<r;i++){
045        printf("inserisci il tempo della prima manche dell'atleta %c : ",atleti[i]);
046        scanf("%f",&tempi1[i]);
047    }
048     
049    //tempi2
050     
051    for(i=0;i<r;i++){
052        printf("inserisci il tempo della seconda manche dell'atleta %c : ",atleti[i]);
053        scanf("%f",&tempi2[i]);
054    }  
055     
056    //calcoli e visualizzazione risultati
057     
058    //1°
059     
060    for(i=0;i<r;i++){
061        tempi_t[i] = tempi1[i]+tempi2[i];
062        ordinati[i] = i;
063    }      
064     
065    n = r;
066    do{
067        k = 0;
068        for(i=0;i<n-1;i++)
069            if(tempi_t[ordinati[i]]<tempi_t[ordinati[i+1]]){
070                aux = ordinati[i];
071                ordinati[i] = ordinati[i+1];
072                ordinati[i+1] = aux;
073                p = i+1;
074                k = 1;
075            }
076        n = p;
077    }while(k);
078     
079    printf("classifica :\n");
080    for(i=0;i<r;i++)
081        printf("%d\t%c\t%f\n",i+1,atleti[ordinati[i]],tempi_t[ordinati[i]]);
082     
083    //2°
084     
085    printf("inserire il nome di un atleta : ");
086    getchar();
087    scanf("%c",&nome);
088     
089    i=0;
090    while(i < r && atleti[i] != nome)
091        i++;
092     
093    if(atleti[i] == nome){
094        j = 0;
095        while(i != ordinati[j])
096            j++;
097         
098        printf("alteta %c : tempo manche 1 = %f, tempo manche 2 = %f; tempo totale = %f; piazzamento = %d\n",nome,tempi1[i],tempi2[i],tempi_t[i],j+1);
099    }else
100        printf("ERRORE : l'altleta inserito non esiste\n");
101     
102    //3°
103     
104    //inizializzazione e numero pseudo-casuale
105    srand(time(NULL));
106    controllo = rand()%r;
107     
108    printf("inserire il risultato del controllo antidoping all'atleta %c(g = grave, l = lieve, n = negativo) : ",atleti[controllo]);
109    getchar();
110    scanf("%c",&risultato_c);
111    if(risultato_c == 'g')
112        tempi2[controllo] += 5;
113    else if(risultato_c == 'l')
114        tempi2[controllo] += 1.5;
115}

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



Copyright © 2004-2025 thecsea.it (Claudio Cardinale - cardi@thecsea.it)! Tutti i diritti riservati. - contattaci