ThatsViraaa ha scritto:
Weierstrass ha scritto:
La parte iniziale funziona per caso: se non inizializzi i a zero rischi di scrivere in un'area di memoria a caso.
Sentinella non serve: while(valore !=0) o direttamente while(valore)
Sulla seconda parte ti ho già scritto che il totale degli input lo butti via e fai il ciclo su 9999 elementi. E comunque quello che fai non ha senso. Ci sono molte strade per contare la frequenza massima. Prova a fare un altro array occorrenze[ESTREMOSUP+1] e conta per ogni indice quante volta appare nell'array precedente: tutti gli indici n tali che occorrenze[n] = valore massimo sono le tue soluzioni. Non è il modo più efficiente per risolvere il problema, ma dato che sei alle prime armi...
Devo far si che sentinella sia una costante in modo tale che nel caso volessi modificare il valore, basta farlo all'inizio e non in tutto il programma. In questo caso sentinella é uguale a 0.
Allora devi fare una #define e il tuo while diventerà qualcosa tipo while (valore != ESCAPE_KEY), di certo non è la strada più sensata usare una variabile inutile, che poi il codice diventa illeggibile e inefficiente. E comunque non sei coerente con te stesso, visto che dovresti comunque modificare tutte le stringhe a monte tipo "Inserisci 0 se vuoi terminare l'esecuzione del programma" o "Errore! Inserisci un numero compreso tra 18 e 90"
Per la seconda parte invece non ho capito come calcolare la massima frequenza.
Questo sta a te farlo. Trova il valore massimo dell'array occorrenze
#include <iostream>
#include <stdio.h>
using namespace std;
#define ESTREMOINF 18 //Numero minimo accettato
#define ESTREMOSUP 90 //Numero massimo accettato
#define ESCAPE_KEY 0
int main(){
int valore = ESCAPE_KEY; //valore intero chiesto in input
int occorrenze[ESTREMOSUP + 1] = {0};
cout <<"Inserisci gli elementi della sequenza (devono essere valori compresi tra " << ESTREMOINF << " e " << ESTREMOSUP <<")"<<endl<<endl;
cout <<"Inserisci " << ESCAPE_KEY << " se vuoi terminare l'esecuzione del programma"<<endl<<endl;
do{ //ciclo che ripeta l'inserimento
cin >> valore;
if(valore>=ESTREMOINF && valore<=ESTREMOSUP)
occorrenze[valore]++;
else
if(valore!=ESCAPE_KEY)
cout <<"Errore! Inserisci un numero compreso tra " << ESTREMOINF << " e " << ESTREMOSUP <<endl;
}while (valore!=ESCAPE_KEY);
return 0;
}