Aiuto, non mi funziona un programma su gli array bidimensionali

di il
5 risposte

Aiuto, non mi funziona un programma su gli array bidimensionali

Buongiorno non riesco a capire perchè questo codice non funziona:

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main()
{
    int prato[10][10];
    int riga,colonna,cont=0;
for (int i=0;i<10;i++)
{
    for (int i=0;i<10;i++)
    {
       prato[colonna][riga]= rand()% 7;
       switch (prato[colonna][riga])
       {
       case 0:
        cont++;
        prato [colonna][riga]=9;
        if (cont==10){prato [colonna][riga]=0;}
        break;
       default:
        prato[colonna][riga]=0;
        break;
       }
       colonna++;
    }
    riga++;
}
for (int i=0;i<10;i++)
{
    for (int i=0;i<10;i++)
    {
      cout<< prato[colonna][riga];
       colonna++;
    }
    riga++;
    cout<<endl;
}
}
Ogni volta che lo faccio partire windows mi manda il messaggio che il programma ha smesso di funzionare.
Grazie in anticipo a chi mi sa aiutare.

5 Risposte

  • Re: Aiuto, non mi funziona un programma su gli array bidimensionali

    Non controlli gli indici dell'Array...
    devi fare un controllo su colonna e riga,, essi non devono superare 9 (nel tuo caso)
    Usare il for con un indice i , in questo caso è un errore... colonna ad esempio andrà oltre il valore 9

    Ti consiglio di usare i for con riga e colonna , e non i
  • Re: Aiuto, non mi funziona un programma su gli array bidimensionali

    Colonna e riga non vengono inizializzati a 0.
    Nota: se hai più for annidati usa nomi di variabile diversi tipo i j k... In questo caso potevi usare direttamente colonna e riga al posto di i
  • Re: Aiuto, non mi funziona un programma su gli array bidimensionali

    
    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    using namespace std;
    int main()
    {
        int prato[10][10];
        int cont=0;
    for (int riga=0;riga<10;riga++)
    {
        for (int colonna=0;colonna<10;colonna++)
        {
           prato[colonna][riga]= rand()% 7;
           switch (prato[colonna][riga])
           {
           case 0:
            cont++;
            prato [colonna][riga]=9;
            if (cont==10){prato [colonna][riga]=0;}
            break;
           default:
            prato[colonna][riga]=0;
            break;
           }
           colonna++;
        }
        riga++;
    }
    for (int riga=0;riga<10;riga++)
    {
        for (int colonna=0;colonna<10;colonna++)
        {
          cout<< prato[colonna][riga];
        }
        cout<<endl;
    }
    }
    
    così ora almeno funziona ma mi da valori strani:

    0602686524000636496808
    0468788006361200636120019947162976364952636495219947166721994723726
    047332080473320892313242870200002650601994723682
    0268652426866640638284812268663220001350380231324395
    9000063649640-190
    468788026865364665628-179746076364952636495263569923626866520
    0473320801920000265060268661600
    0026864280268656820001350381994716297419953097364292048
    04687880042007840-10002686672
    468788026864720466137263569923616144005846819947163702686728
  • Re: Aiuto, non mi funziona un programma su gli array bidimensionali

    Anzi risolto grazie!
  • Re: Aiuto, non mi funziona un programma su gli array bidimensionali

    Non ho capito cosa dovrebbe fare il programma, comunque stai attento a 2 cose:

    nei for si ripetono le istruzioni riga++ e colonna++

    e l'ordine degli elementi dell'Array.
Devi accedere o registrarti per scrivere nel forum
5 risposte