logo Thecsea.it



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



scolastica » esercizi » terza superiore » linguaggio c

Testo dell'esercizio

Dopo aver acquisito da tastiera i nomi e i voti ottenuti da due candidati in un ballottaggio, calcolare la percentuale di ciascuno rispetto alla somma dei voti e scrivere in nomi dei candidati in ordine descrescente di percentuale.
Usare vettori globali.
Acquisisci: funzione che acquisisce i dati.
Percentuale: funzione che calcola la percentuale
Ordina: funzione di ordinamento.

mostra soluzione

/*
CLAUDIO CARIDNALE 3AI
Dopo aver acquisito da tastiera i nomi  e i voti ottenuti da due candidati in un ballottaggio, calcolare la percentuale di ciascuno rispetto alla somma dei voti e scrivere in nomi dei candidati in ordine descrescente di percentuale.
Usare vettori globali.
Acquisisci: funzione che acquisisce i dati.
Percentuale: funzione che calcola la percentuale
Ordina: funzione di ordinamento. 
*/
#include<stdio.h>
#define MAX 1000
#define LEN 100
void acquisisci(void);
void percentuale(void);
void ordina(void);
char nomi[MAX][LEN];
int voti[MAX];
float percentuali[MAX];
int ordinati[MAX];
int l;

int main(){
	
	//dichiarazioni
	int i;
	
	//funzioni
	
	//acquisizione
	acquisisci();
	
	//calcolo percentuale
	percentuale();
	
	//ordinamento
	ordina();
	
	//stampa dei risultati
	for(i=0;i<l;i++)
		printf("%s = %d -> %f%%\n",nomi[ordinati[i]],voti[ordinati[i]],percentuali[ordinati[i]]);
}

//acquisizione
void acquisisci(void){
	//dichiarazioni
	int i;
	
	//acquisizione numero di candidati
	do{
		printf("inserire il numero di candidati : ");
		scanf("%d",&l);
	}while(l<1 || l>=MAX);
	
	//acqusizone dati
	for(i=0;i<l;i++){
		printf("inserire il nome del candidato, %d : ",i+1);
		scanf("%s",nomi[i]);
		printf("inserire il numero di voti ottenuti da %s : ",nomi[i]);
		scanf("%d",&voti[i]);
	}
}

void percentuale(void){
	
	//dichiarazioni
	int i,somma = 0;
	
	//somma di tutti i voti
	for (i=0;i<l;i++)
		somma += voti[i];
	
	//calcolo percentuale
	for (i=0;i<l;i++)
		percentuali[i] = (float)voti[i]/somma*100;	
}

void ordina(void){

	//dichiarazioni
	int i, k, len = l, aux;
	
	//inizializzazione vettore ordinato
	for(i=0;i<l;i++)
		ordinati[i] = i;
	
	//ordinamento
	do{
		k = 0;
		for(i=0;i<len-1;i++){
		if(percentuali[ordinati[i]]<percentuali[ordinati[i+1]]){
			aux = ordinati[i];
			ordinati[i] = ordinati[i+1];
			ordinati[i+1] = aux;
			k = i+1;
		}
		}
		len = k;
	}while(k);
}

Testi Consigliati:

Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C

torna



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