Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Errore sugli array .

    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 :
    codice:
    #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

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    cont è una semplice variabile non un vettore
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    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...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    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
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ok , ho risolto.. ma solo su linux il programma parte, mentre su windows quando apro il programma non compare ancora nessun messaggio..come mai?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Quote Originariamente inviata da Trollvicko Visualizza il messaggio
    come mai?
    E' difficile dirlo ... mostra il codice e dacci maggiori informazioni ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.