Programma C++ Crasha all'avvio utilizzando funzionalità rand

di il
2 risposte

Programma C++ Crasha all'avvio utilizzando funzionalità rand

Ciao a tutti! Scusate se commetto errori ma sono nuovo di questo sito.
Ho provato a scrivere un codice che permettesse di visualizzare in output una stringa random appartenente ad un array.
Il programma crasha all'avvio.
Dato che non ho mai utilizzato la funzionalità random ho pensato fosse esso il problema, anche se proprio non saprei dov'è l'errore, soprattutto perchè il compilatore non segna alcun problema.
Vi posto il codice:

#include <cstdlib>
#include <iostream>

#include <stdlib.h>
#include <time.h>

using namespace std;

class RandomGenerator
{
      public:
      //Attributi

      //Metodi
      void CalcoloRandom(string, int);
};

void RandomGenerator::CalcoloRandom(string Array, int Dimensione)
{
     srand ( time(NULL) );
     RandIndex = rand() % Dimensione;
     cout << Array[RandIndex]<<'\n';
};

int main(int argc, char *argv[])
{
    RandomGenerator MusicaMaestro;
    string Scale[15]={"Do Maggiore","Re Maggiore","Mi Maggiore","Fa Diesis Maggiore","Sol Maggiore",  "La Maggiore","Si Maggiore","Do Diesis Maggiore","Do Bemolle Maggiore", "Re Bemolle Maggiore","Mi Bemolle Maggiore","Fa Maggiore","Sol Bemolle Maggiore", "La Bemolle Maggiore","Si Bemolle Maggiore"};
    MusicaMaestro.CalcoloRandom(Scale[15],15);

    system("PAUSE");
    return EXIT_SUCCESS;
}
Grazie a tutti del supporto!

2 Risposte

  • Re: Programma C++ Crasha all'avvio utilizzando funzionalità rand

    Qui il problema è una altro. La funzione CalcoloRandom accetta un string e tu vorresti che accettasse un vettore di string. Tu credi di averli passato tutto il vettore ma in realtà li hai passato la locazione numero 15 che nel vettore da 15 elementi non esiste in quanto gli indici vanno da 0 a 14. Poi randIndex non è definito e il compilatore dovrebbe segnalartelo come errore.Quindi soluzione. (da notare l'uso corretto di srand. Viene chiamato solo una volta come giusto che sia)
        #include <cstdlib>
        #include <iostream>
    
        #include <stdlib.h>
        #include <time.h>
    
        using namespace std;
    
        class RandomGenerator
        {
              public:
              //Attributi
    
              //Metodi
              void CalcoloRandom(string [], int);
        };
    
        void RandomGenerator::CalcoloRandom(string Array[], int Dimensione)
        {
             int RandIndex = rand() % Dimensione;
             cout << Array[RandIndex]<<'\n';
        };
    
        int main(int argc, char *argv[])
        {
            srand ( time(NULL) );
            RandomGenerator MusicaMaestro;
            string Scale[15]={"Do Maggiore","Re Maggiore","Mi Maggiore","Fa Diesis Maggiore","Sol Maggiore",  "La Maggiore","Si Maggiore","Do Diesis Maggiore","Do Bemolle Maggiore", "Re Bemolle Maggiore","Mi Bemolle Maggiore","Fa Maggiore","Sol Bemolle Maggiore", "La Bemolle Maggiore","Si Bemolle Maggiore"};
            MusicaMaestro.CalcoloRandom(Scale,15);
    
            system("PAUSE");
            return EXIT_SUCCESS;
        }
    
  • Re: Programma C++ Crasha all'avvio utilizzando funzionalità rand

    Ok grazie mille della correzione
Devi accedere o registrarti per scrivere nel forum
2 risposte