Ciao a tutti:
di seguito un listato di esempio
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
const int MAXcaratteri = 20;
void istogramma(const int vettore[], const int dimVett);//traccia un isogramma dei dati contenuti nel vettore "vettore"
int main()
{
srand(time(0));
int vettore[MAXcaratteri] = { 0 };
for (int i = 0; i < MAXcaratteri; i++) {
vettore[i] = rand() % 100; // pseudo casuali tra 0 e 99
}
istogramma(vettore, MAXcaratteri);
}
void istogramma(const int vettore[], const int dimensione) {// normalizzo per costruire un istogramma
int maxLunghezza = 69; // numero massimo di caratteri nell'istogramma
char simbolo = '*';// carattere unitario dell'istogramma
int max = 0;
int vettoreNormalizzato[dimensione] = { 0 };
for (int i = 0; i < dimensione; i++) {
if (max < vettore[i]) {
max = vettore[i];
}
}
for (int i = 0; i < dimensione; i++) {
vettoreNormalizzato[i] = (vettore[i] * maxLunghezza) / max;
}
cout << endl;
// in lunghezzaStatCopia[i] ho i dati normalizzati il massimo a 'dimensione' unità
cout << "Istogramma della lunghezza delle parole" << endl << endl;
cout << " |---------|---------|---------|---------|---------|---------|--------+" << endl;
for (int i = 0; i < dimensione; i++) {
if (vettoreNormalizzato[i] > 0) {//solo se ci sono dati significativi
cout << setw(2) << right << i << " lettere |";
for (int j = 0; j < vettoreNormalizzato[i]; j++) {
cout << simbolo;
}
cout << endl;
}
}
cout << " |---------|---------|---------|---------|---------|---------|--------+";
}
come potete vedere la funzione istogramma prevede come argomenti un vettore e la sua dimensione, dichiarata come const int.
all'intero della funzione dichiaro un vettore, la cui dimensione è proprio "dimensione" intero e costante.
Compilando con visual studio, mi abortisce con il messaggio "L'espressione deve avere un valore costante non è possibile usare il valore di parametro "dimensione" (dichiarato alla riga 29) come costante
la riga 29 è l'inizio della funzione istogramma.
se nella dichiarazione del vettore invece di "dimensione" uso per esempio MAXcaratteri o un intero qualsiasi per esempio 1000 tutto funziona.
dove stò sbagliando?