logo Thecsea.it



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



scolastica » esercizi » terza superiore » informatica

Testo dell'esercizio

mostra soluzione

01#include<stdio.h>
02#define MAX 1000
03int converti(int ore,int minuti, int secondi);
04void ordina(int vet1[MAX], int vet2[MAX], int n);
05void scambia(int *a, int *b);
06int main(){
07    //dichiarazioni
08    int 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        printf("inserire il numero identificativo del concorrente numero %d : ",i+1);
19        scanf("%d",&ident[i]);
20        printf("inserire il tempo (nel formato ore � minuti � secondi) del concorrente numero %d : ",i+1);
21        scanf("%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    for(i=0;i<n;i++)
30        printf("%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
35int converti(int ore,int minuti, int secondi){
36    return (ore*3600+minuti*60+secondi);
37}
38 
39/*
40funzione che ordina due vettori in base a vet2, ricevuti come parametro e di lunghezza n, ricevuta anche essa come parametro
41*/
42void ordina(int vet1[MAX], int vet2[MAX], int n){
43    int i,k,aux;
44    do{
45        k = 0;
46        for(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    }while(k);
54}
55 
56void scambia(int *a, int *b){
57    int aux;
58    aux = *a;
59    *a = *b;
60    *b = aux;
61}

torna



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