#include<stdio.h>
#define MAX 1000
int converti(int ore,int minuti, int secondi);
void ordina(int vet1[MAX], int vet2[MAX], int n);
void scambia(int *a, int *b);
int main(){
//dichiarazioni
int ident[MAX], tempi[MAX],i,n,ore,minuti,secondi;
//acquisizione di n
do{
printf("inserire il numero dei concorrenti : ");
scanf("%d",&n);
}while(n<1 || n>= MAX);
//acquisizione dei dati
for(i=0;i<n;i++){
printf("inserire il numero identificativo del concorrente numero %d : ",i+1);
scanf("%d",&ident[i]);
printf("inserire il tempo (nel formato ore � minuti � secondi) del concorrente numero %d : ",i+1);
scanf("%d - %d - %d",&ore,&minuti,&secondi);
tempi[i] = converti(ore,minuti,secondi);
}
//ordinamento
ordina(ident,tempi,n);
//visualizzazione
for(i=0;i<n;i++)
printf("%d => %d\n",ident[i],tempi[i]);
}
//funzione che converte in secondi il tempo espresso in ore, minuti e secondi, ricevuti come parametri
int converti(int ore,int minuti, int secondi){
return (ore*3600+minuti*60+secondi);
}
/*
funzione che ordina due vettori in base a vet2, ricevuti come parametro e di lunghezza n, ricevuta anche essa come parametro
*/
void ordina(int vet1[MAX], int vet2[MAX], int n){
int i,k,aux;
do{
k = 0;
for(i=0;i<n-1;i++)
if(vet2[i]>vet2[i+1]){
scambia(&vet1[i],&vet1[i+1]);
scambia(&vet2[i],&vet2[i+1]);
k = i+1;
}
n = k;
}while(k);
}
void scambia(int *a, int *b){
int aux;
aux = *a;
*a = *b;
*b = aux;
}