Errore di check failure che non riesco a correggere. (C++)

di il
6 risposte

Errore di check failure che non riesco a correggere. (C++)

Salve a tutti, mi stavo esercitando in alcuni esercizi su vettori e sono bloccato su questo errore.
L'esercizio chiede: Scrivi un programma che permette di verificare la legge dei grandi numeri mediante il lancio di un dado: leggendo in input il numero di volte che un dado deve essere lanciato, simula questa situazione mediante la generazione di un numero casuale compreso tra 1 e 6; quindi calcola la frequenza con la quale ciascuna delle sei facce viene selezionata all’aumentare dei lanci. Visualizza le uscite per ciascun valore con le relative frequenze.
Ho provato a dare la mia soluzione ma a quanto pare non è corretto.

using namespace std;

#include <iostream> 
#include <time.h>

const int FACCE = 6;

int main()
{
	int i, volte;
	int frequenza[FACCE] = { 0, 0, 0, 0, 0, 0 };
	int dado[FACCE];
	srand(time(0));

	cout << "Quante volte vuoi che venga ripetuto il lancio? \n";
	cin >> volte;

	
	for (i = 0; i < volte; i++)
	{
		dado[i] = (rand() % FACCE+1 );
	}

	cout << "I numeri estratti da " << volte << " lanci sono:\n";
	for (i = 0; i < volte; i++)
	{
		cout << dado[i] << "\t";
		
		switch (dado[i])
		{
		case 1:
			frequenza[1]++;
			break;
		case 2:
			frequenza[2]++;
				break;
		case 3:
			frequenza[3]++;
			break;
		case 4:
			frequenza[4]++;
			break;
		case 5:
			frequenza[5]++;
			break;
		case 6:
			frequenza[6]++;
			break;
		}

	}

	cout << "\nLa frequenza di uscita dei numeri in " << volte << " lanci e' la seguente:\n";
	cout << "Il numero 1 e' uscito: " << frequenza[1] << " volte\n.";
	cout << "Il numero 2 e' uscito: " << frequenza[2] << " volte\n.";
	cout << "Il numero 3 e' uscito: " << frequenza[3] << " volte\n.";
	cout << "Il numero 4 e' uscito: " << frequenza[4] << " volte\n.";
	cout << "Il numero 5 e' uscito: " << frequenza[5] << " volte\n.";
	cout << "Il numero 6 e' uscito: " << frequenza[6] << " volte\n.";

}

6 Risposte

  • Re: Errore di check failure che non riesco a correggere. (C++)

    Gli array iniziano da zero: con frequenza[6] sei fuori.

    Il punto prima del newline
  • Re: Errore di check failure che non riesco a correggere. (C++)

    Weierstrass ha scritto:


    Gli array iniziano da zero: con frequenza[6] sei fuori.

    Il punto prima del newline
    Vero, grazie mille.
  • Re: Errore di check failure che non riesco a correggere. (C++)

    Weierstrass ha scritto:


    Gli array iniziano da zero: con frequenza[6] sei fuori.

    Il punto prima del newline
    Anche modificando mi reclama lo stesso errore, devo apportare modifiche nei vari for per adattare?
  • Re: Errore di check failure che non riesco a correggere. (C++)

    
    using namespace std;
    
    #include <iostream> 
    #include <time.h>
    
    const int FACCE = 6;
    
    int main(){
    	int i, volte, dado;
    	int frequenza[FACCE] = {0};
    
    	srand(time(0));
    
    	cout << "Quante volte vuoi che venga ripetuto il lancio?\n";
    	cin >> volte;
    
    	cout << "I numeri estratti da " << volte << " lanci sono:\n";	
    	for (i = 0; i < volte; i++){
    	    dado = rand() % FACCE;
    	    frequenza[dado]++;
    	    cout << dado + 1 << "\t";
    	}
    
    	cout << "\nLa frequenza di uscita dei numeri in " << volte << " lanci e' la seguente:\n";
    	for (i = 0; i < FACCE; i++)
    	    cout << "Il numero " << i + 1 << " e' uscito " << frequenza[i] << " volte.\n";
    
        return 0;
    }
    
  • Re: Errore di check failure che non riesco a correggere. (C++)

    Puoi semplificare molto il codice:
    using namespace std;
    
    #include <iostream> 
    #include <time.h>
    
    const int FACCE = 6;
    
    int main()
    {
    	int i, volte, k;
    	int frequenza[FACCE] = { 0, 0, 0, 0, 0, 0 };
    	srand(time(0));
    
    	cout << "Quante volte vuoi che venga ripetuto il lancio? \n";
    	cin >> volte;
    
    
    	for (i = 0; i < volte; i++)
    	{
            	k = rand() % FACCE;
    		frequenza[k]++;
    
    	}
    
    	cout << "I numeri estratti da " << volte << " lanci sono:\n";
    	for (i = 0; i < FACCE; i++)
    	{
    		cout << "Numero " << i+1 << ":" << frequenza[i] << "\n";
    
    	}
    	return 0;
    }
    
  • Re: Errore di check failure che non riesco a correggere. (C++)

    Weierstrass ha scritto:


    
    using namespace std;
    
    #include <iostream> 
    #include <time.h>
    
    const int FACCE = 6;
    
    int main(){
    	int i, volte, dado;
    	int frequenza[FACCE] = {0};
    
    	srand(time(0));
    
    	cout << "Quante volte vuoi che venga ripetuto il lancio?\n";
    	cin >> volte;
    
    	cout << "I numeri estratti da " << volte << " lanci sono:\n";	
    	for (i = 0; i < volte; i++){
    	    dado = rand() % FACCE;
    	    frequenza[dado]++;
    	    cout << dado + 1 << "\t";
    	}
    
    	cout << "\nLa frequenza di uscita dei numeri in " << volte << " lanci e' la seguente:\n";
    	for (i = 0; i < FACCE; i++)
    	    cout << "Il numero " << i + 1 << " e' uscito " << frequenza[i] << " volte.\n";
    
        return 0;
    }
    
    Grazie mille di nuovo, ho corretto.
Devi accedere o registrarti per scrivere nel forum
6 risposte