/* Problema. Scrivere un programma in grado di calcolare il numero di voti ricevuti da ciascun candidato in una ipotetica votazione. Soluzione: si assume di associare a ciascun candidato un numero progressivo da 1 al numero di candidati (ncand); 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 v e dimensione ncand; una funzione di nome MAX per determinare l'indice dell'elemento massimo di un dato array v. */ #include int MAX(int v[], int N); int main() {const int MAX_CAND = 100; int v[MAX_CAND]; int cand, ncand; cout << "immetti il numero dei candidati (max. 100)" << endl; do cin >> ncand; while (ncand < 1 || ncand > MAX_CAND); for (cand = 1; cand <= ncand; ++cand) v[cand-1] = 0; cout << "immetti i numeri identificativi dei candidati votati (0 per uscire)" << endl; do { cout << "voto attribuito al candidato n."; do cin >> cand; while (cand < 0 || cand > ncand); if (cand != 0) ++v[cand-1]; } while (cand != 0); cout << endl << "RISULTATI:" << endl; cout << "candidato " << "voti" << endl; for (cand = 1; cand <= ncand; ++cand) cout << " " << cand << " " << v[cand-1] << endl; cout << endl << "VINCITORE:" << endl; cout << "candidato n. " << (MAX(v,ncand)+1) << endl; return 0; } int MAX(int v[], int N) {int iMAX = 0, j = 0; while (j < N) {if (v[j] > v[iMAX]) iMAX = j; ++j; } return iMAX; }