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

#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;
}

torna



Copyright © 2004-2024 thecsea.it (Claudio Cardinale - [email protected])! Tutti i diritti riservati. - contattaci