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