/* Scrivere un programma in grado di calcolare il numero di voti ricevuti da ciascun candidato in una ipotetica votazione. Si assume di associare a ciascun candidato un numero progressivo da 1 al numero di candidati (num_candidati); un voto per il candidato "i" e' espresso dando in input il numero "i". Il numero 0 indica che si vuol terminare l'immissione dei dati di input. Ad esempio: 3 1 3 2 0 indica che si sono attribuiti: 1 voto al candidato 1, 1 voto al candidato 2, 2 voti al candidato 3, 0 voti a tutti gli altri candidati Input: il numero di candidati partecipanti alla votazione (al massimo 100), seguito da una sequenza di numeri positivi, terminata da un numero 0. Output: una tabella riportante per ciascun candidato il numero di voti ottenuto e l'indicazione del candidato vincitore con il relativo numero di voti ottenuti. Strutture dati e funzioni: - un array di interi, di nome "voti" e dimensione "num_candidati"; - una funzione di nome "max()" per determinare l'indice dell'elemento massimo dell'array "voti". */ #include int max(int[], int); int main() { const int max_candidati = 100; int voti[max_candidati]; // Immissione numero di candidati. int num_candidati; cout << "Immetti il numero dei candidati (max 100): " << endl; do cin >> num_candidati; while (num_candidati < 1 || num_candidati > max_candidati); // Inizializza l'array `voti' tutto a 0. for (int i = 0; i < num_candidati; ++i) voti[i] = 0; cout << "Immetti i numeri identificativi dei candidati votati " << "(0 per uscire)" << endl; int index_candidato; do { // Immissione voto dando il numero corrispondente al candidato. cout << "voto attribuito al candidato n."; cin >> index_candidato; // Incremento del numero di voti del candidato. if (index_candidato > 0 && index_candidato <= num_candidati) ++voti[index_candidato-1]; else if (index_candidato != 0) cout << "Voto non valido!" << endl; } while (index_candidato != 0); // Stampa tabella con tutti i candidati ed il numero di voti // corrispondente. cout << endl << endl << "*** RISULTATI ***" << endl; cout << "candidato" << "\t voti" << endl; for (index_candidato = 0; index_candidato < num_candidati; ++index_candidato) cout << "\t" << index_candidato+1 << "\t " << voti[index_candidato] << endl; // Calcolo e stampa del vincitore. cout << endl << "*** VINCITORE ***" << endl; cout << "candidato n. " << max(voti, num_candidati)+1 << endl; return 0; } int max(int v[], int dim) { int index_max = 0; int j = 0; while (j < dim) { if (v[j] > v[index_max]) index_max = j; ++j; } return index_max; }