PDA

Visualizza la versione completa : [C++] Errore sugli array .


Trollvicko
22-01-2015, 17:23
Salve ,

Frequento il terzo anno di un istituto tecnico industriale e oggi abbiamo fatto il compito in classe che prevedeva di generare un tot di numeri casuali (la quantità potevamo deciderla noi) tra 1 e 100, e successivamente di verificare quante volte essi venivano ripetuti dando in uscita un messaggio contenente per esempio "il numero 1 è stato ripetuto tot volte". Questo messaggio doveva essere fatto per ogni numero fino al raggiungimento del numero 100 . Oggi in classe ho consegnato questo codice che però riporta due errori corrispondenti al rigo 13 e 16 . Il codice è questo :

#include <iostream>#include <cstdlib>
#include <ctime>
const int n=20;
using namespace std;
int main(){
int i,j,cont=0,NUMERI[n];
for(i=1;i<=n;i++)NUMERI[i]=0;
for(i=1;i<=n;i++){
NUMERI[i]=rand()%100+1;
for(j=1;j<=100;j++)
{
if(NUMERI[i]==j)cont[j]++;
}
}
for(j=1;j<=100;j++)cout<<"il numero"<<j<<"e' stato ripetuto"<<cont[j]<<"volte"<<endl;


system("pause");
return 0;
}




Quando lo salvo e lo compilo però mi risulta questo :
C:\Users\user\Desktop\Untitled1.cpp||In function 'int main()':|
C:\Users\user\Desktop\Untitled1.cpp|13|error: invalid types 'int[int]' for array subscript|
C:\Users\user\Desktop\Untitled1.cpp|16|error: invalid types 'int[int]' for array subscript|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|




L'errore sembra essere il cont[j] che io ho usato , vorrei però sapere perchè non me lo accetta,
grazie in anticipo :o

oregon
22-01-2015, 17:46
cont è una semplice variabile non un vettore

Trollvicko
22-01-2015, 17:59
Ok , ora ho dichiato come vettore cont :

#include <iostream>#include <cstdlib>
#include <ctime>
const int n=20;
using namespace std;
int main(){
int i,j,NUMERI[n],cont[100];
for(i=1;i<=n;i++)NUMERI[i]=0;
for(j=1;j<=100;j++)cont[j]=0;
for(i=1;i<=n;i++){
NUMERI[i]=rand()%100+1;
for(j=1;j<=100;j++)


{
if(NUMERI[i]==j)cont[j]++;
}
}
for(j=1;j<=100;j++)cout<<"il numero"<<j<<"e' stato ripetuto"<<cont[j]<<"volte"<<endl;


system("pause");
return 0;
}




ho tentato di azzerare pure il vettore dato che mi dava numeri stratosferici nella ripetizione dei numeri , ma inserendo il ciclo for per appunto azzerarlo non mi da nessun messaggio...

oregon
22-01-2015, 18:14
In C gli indici dei vettori vanno da 0 a n-1

Se hai un vettore di 100 elementi la for deve essere fatta da 0 a 99

Trollvicko
23-01-2015, 19:47
Ok , ho risolto.. ma solo su linux il programma parte, mentre su windows quando apro il programma non compare ancora nessun messaggio..come mai?

oregon
23-01-2015, 20:48
come mai?

E' difficile dirlo ... mostra il codice e dacci maggiori informazioni ...

Loading