Salve, sono alle prese con un esercizio da libro che descrivo in seguito.
/*Scrivere un programma che consenta all'utente di fornire i cognomi di cinque candidati ad un'elezione, ciascuno seguito dal numero di voti ricevuti. Il programma deve visualizzare i cognomi dei candidati, ciascuno seguito dal numero di voti ricevuti e dalla percentuale che tali voti rappresentano rispetto al totale dei voti espressi. Il programma deve anche decretare un vincitore dell'elezione.*/
Premetto che non ho ancora studiato i puntatori.(saranno argomento del prossimo capitolo)
Ringrazio anticipatamente chiunque mi offra delle delucidazioni.
il risultato che ottengo è il seguente: dove 9.32 è il valore riferito ai voti di "ashtony".
NOMI N°VOTI % VOTI
Johnson 5000 9.32642
Miller 4000 9.32642
Duffy 6000 9.32642
Robinson 2500 9.32642
Ashtony 1800 9.32642
Totale 19300
Il vincitore delle elezioni è : Duffy
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
double vincitore(double voti []); // funzione che stabilisce il vincitore delle elezioni
double percentuale(double x[], int y); /* funzione che calcola la percentuale dei voti ricevuta da ogni singolo
candidato in base al totale.*/
int main (){
ifstream inFile;
inFile.open("DaLeggere2.txt");
string nomi [5];
double voti [5];
double percentual[5];
int totale;
int largest;
cout<<setw(10)<<left<<"NOMI"<<setw(5)<<setw(10)<<left<<"N°VOTI"<<setw(5)<<setw(10)<<left<<" % VOTI"<<endl;
for(int i=0; i<5; i++){
inFile>>nomi[i]>>voti[i]; //ciclo for che calcola il totale dei voti leggendo i dati da File
totale+=voti[i];
}
inFile.close();
inFile.open("DaLeggere2.txt");
for (int i = 0; i<5; i++)
{ inFile>>nomi[i]>>voti[i];
percentual[i]=percentuale(voti, totale);
cout<<setw(1)<<setw(10)<<left<<nomi[i]<<setw(1)<<setw(10)<<left<<voti[i]<<setw(1)<<setw(10)<<left<<percentual[i]<<endl;
}
cout<<setw(1)<<setw(10)<<left<<"Totale"<<setw(1)<<setw(10)<<left<<totale<<endl;
largest=vincitore(voti);
cout<<"Il vincitore delle elezioni è : "<<nomi[largest];
return 0;
}
double vincitore (double voti [])
{
int maxIndex;
maxIndex=0;
for (int index=1; index<5; index++)
if (voti[maxIndex]<voti[index])
maxIndex=index;
return maxIndex;
}
double percentuale( double x[] , int y)
{
double z[5];
double s;
for(int i=0; i<5; i++){
z[i]=((x[i]/y)*100);
}
for(int i=0; i<5; i++){
s=z[i];
}
return s;
}