mostra soluzione
01
#include<stdio.h>
02
#define MAX 1000
03
int
converti(
ore,
minuti,
secondi);
04
void
ordina(
vet1[MAX],
vet2[MAX],
n);
05
scambia(
*a,
*b);
06
main(){
07
//dichiarazioni
08
ident[MAX], tempi[MAX],i,n,ore,minuti,secondi;
09
10
//acquisizione di n
11
do
{
12
printf
(
"inserire il numero dei concorrenti : "
);
13
scanf
"%d"
,&n);
14
}
while
(n<1 || n>= MAX);
15
16
//acquisizione dei dati
17
for
(i=0;i<n;i++){
18
"inserire il numero identificativo del concorrente numero %d : "
,i+1);
19
,&ident[i]);
20
"inserire il tempo (nel formato ore � minuti � secondi) del concorrente numero %d : "
21
"%d - %d - %d"
,&ore,&minuti,&secondi);
22
tempi[i] = converti(ore,minuti,secondi);
23
24
25
//ordinamento
26
ordina(ident,tempi,n);
27
28
//visualizzazione
29
(i=0;i<n;i++)
30
"%d => %d\n"
,ident[i],tempi[i]);
31
32
33
34
//funzione che converte in secondi il tempo espresso in ore, minuti e secondi, ricevuti come parametri
35
secondi){
36
return
(ore*3600+minuti*60+secondi);
37
38
39
/*
40
funzione che ordina due vettori in base a vet2, ricevuti come parametro e di lunghezza n, ricevuta anche essa come parametro
41
*/
42
n){
43
i,k,aux;
44
45
k = 0;
46
(i=0;i<n-1;i++)
47
if
(vet2[i]>vet2[i+1]){
48
scambia(&vet1[i],&vet1[i+1]);
49
scambia(&vet2[i],&vet2[i+1]);
50
k = i+1;
51
52
n = k;
53
(k);
54
55
56
*b){
57
aux;
58
aux = *a;
59
*a = *b;
60
*b = aux;
61
torna