Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct {
- int tempi[10]; /* Tempi misurati ogni 100 metri */
- char nome[20]; /* Nome dell'atleta */
- } corridore;
- /* Funzioni da implementare */
- corridore *leggi_input(int *dim){
- int n=0,i=0,j=0,k=0;
- scanf("%d",&n);
- corridore * new=malloc(sizeof(corridore)*n);
- for (i=0;i<n;i++){
- scanf("%s",new[i].nome);
- for (j=0;j<10;j++)
- scanf("%d",&new[i].tempi[j]);
- }
- *dim=n;
- return new;
- }
- int trova_vincitore(corridore *vect, int dim){
- int min=vect[1].tempi[10], vincitore=1,i=0;
- for(i=1;i<dim;i++){
- if (min>vect[i].tempi[10]){
- min=vect[i].tempi[10];
- vincitore=i;
- }
- }
- return vincitore;
- }
- int* tempi_to_intervalli(corridore c){
- int i=1,j=0;
- int *a=malloc(sizeof(int)*10);
- a[0]=c.tempi[j];
- while(i<10){
- a[i]=c.tempi[i]-c.tempi[j];
- j++;
- i++;
- }
- return a;
- }
- int* trova_sprint(corridore c){
- int i=0,j=0;
- float media=0;
- int * intervalli=tempi_to_intervalli(c);
- int *a=malloc(sizeof(int)*10);
- for (i=0;i<10;i++){
- j=0;
- media=0;
- while(j<10){
- if (j!=i)
- media=media+intervalli[j];
- j++;
- }
- media=media/9;
- if (intervalli[i]<(media/2))
- a[i]=1;
- else a[i]=0;
- }
- return a;
- }
- int main()
- {
- corridore *input;
- int dim, dim_sprint, vincitore, i, j;
- int* intervalli, *sprint;
- /* Legge l'input */
- input=leggi_input(&dim);
- printf("Stampa dei valori in input: (%d atleti)\n", dim);
- for (i=0; i<dim; i++){
- printf("Tempi per l'atleta %s:", input[i].nome);
- for (j=0; j<10; j++)
- printf(" %d",input[i].tempi[j]);
- printf("\n");
- }
- // Trova il vincitore
- vincitore = trova_vincitore(input, dim);
- printf("Nome del vincitore: %s (miglior tempo: %d secondi)\n", input[vincitore].nome, input[vincitore].tempi[9]);
- // Converti da tempi ad intervalli
- for (i=0; i<dim; i++){
- intervalli = tempi_to_intervalli(input[i]);
- printf("Intervalli per l'atleta %s:", input[i].nome);
- for (j=0; j<10; j++)
- printf(" %d",intervalli[j]);
- printf("\n");
- free(intervalli);
- }
- // Trova gli sprint
- for (i=0; i<dim; i++){
- sprint = trova_sprint(input[i]);
- printf("Sprint per l'atleta %s:", input[i].nome);
- for (j=0; j<10; j++)
- printf(" %d", sprint[j]);
- printf("\n");
- free(sprint);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement