giovanniverdelegno
14-01-2011, 17:39
:D
Salve a tutti. Sono ancora io, quello che non si chiama giovanni, e che aveva problemi con i numeri pseudo casuali. Ricordo che l'intento del mio programma era quello di simulare i tanto rinomati giochi di archimede: dobbiamo far si che n giocatori (a scelta dell'utente che eseguirà il programma) rispondano completamente a caso (dando una risposta a caso quindi per ogni domanda, e ricordo che le domande sono 25), e che le loro risposte vengano confrontate con la sequenza (dettata in un vettore) di risposte giuste. Se una singola risposta combacia con la risposta del vettore contente quelle giuste, al giocatore si sommeranno 5 punti, altrimenti 0. Alla fine quindi dovremo fare media e deviazione standard dei risultati. Sembrava che il programma tornasse, quando il prof mi dice che c'è un errore, dandomi delle correzioni. :confused: Io applico queste benedette correzioni, ma il risultato è peggio di prima. :muro: Qualcuno sa dirmi il perché? Penso che a livello sintattico non ci siano problemi, per quanto riguarda l'indept; sostengo che i problemi stiano a livello logico matematico, e non riesco proprio a capire quali siano. :muro:
#include <iostream>
#include <ctime>
#include <cmath>
#define var() (rand()%5)+1
#include <cstdlib>
using namespace std;
int main(){
cout.precision(15);
int n;
int i;
int ferma;
cout << "Inserisci il numero di giocatori ";
cin >> n;
int p[n];
int rg[25] = {1,3,4,2,5,1,3,2,3,4,5,1,2,3,2,2,1,3,5,4,3,2,1,3,5};
// Queste sono le risposte giuste.
int rc[25];
for(int i=0; i<n; i++){
for(int l=0; l<25; l++){
rc[l] = var();
if (rc[l] == rg[l]){
p[l] = p[l] + 5;
}
}
}
int somma = 0;
double somma2 = 0;
int media;
double dvstd;
for (int i=0; i<n; i++){
somma = somma + p[i];
cout << somma<< endl;
somma2 = somma2 + p[i]*p[i];
}
cout << somma<< endl;
media = somma/n;
dvstd = sqrt(somma2/n - media*media);
cout << "La media viene: "; cout << media << endl;
cout << "La deviazione standard viene: "; cout << dvstd << endl;
cin >> ferma;
return 0;
}
Vi ringrazio moltissimo. Ciao.
Questo è il programma non corretto, la nostra versione prima che venisse corretta.
#include <iostream>
#include <ctime>
#include <cmath>
#define var() (rand()%5)+1
using namespace std;
int main(){
cout.precision(4);
int n;
int i;
int ferma;
cout << "Inserisci il numero di giocatori ";
cin >> n;
int vettore[n];
int rg[25] = {2,1,5,3,4,2,1,4,5,2,5,3,3,4,1,3,5,3,2,2,5,2,4,3,1};
// Queste sono le risposte giuste.
int rc[25];
int somma = 0;
int k = 0;
for(int i=0; i<n; i++){
for(int l=0; l<25; l++){
rc[l] = var();
if (rc[l] == rg[l]){
somma += 5;
k += 1;
}
}
}
int media = 0;
media = somma/n;
int somma2 = 0;
float dvstd = 0;
for (int i=0; i<k; i++){
somma2= somma2+ ((5-media)*(5-media));
}
dvstd = sqrt(somma2/k);
// (nel programma i valori validi sono contenuti in "k")
cout << "La media viene: "; cout << media << endl;
cout << "La deviazione standard viene: "; cout << dvstd << endl;
// Il calcolo della deviazione è basato esclusivamente su valori validi (5)
cin >> ferma;
return 0;
}
Salve a tutti. Sono ancora io, quello che non si chiama giovanni, e che aveva problemi con i numeri pseudo casuali. Ricordo che l'intento del mio programma era quello di simulare i tanto rinomati giochi di archimede: dobbiamo far si che n giocatori (a scelta dell'utente che eseguirà il programma) rispondano completamente a caso (dando una risposta a caso quindi per ogni domanda, e ricordo che le domande sono 25), e che le loro risposte vengano confrontate con la sequenza (dettata in un vettore) di risposte giuste. Se una singola risposta combacia con la risposta del vettore contente quelle giuste, al giocatore si sommeranno 5 punti, altrimenti 0. Alla fine quindi dovremo fare media e deviazione standard dei risultati. Sembrava che il programma tornasse, quando il prof mi dice che c'è un errore, dandomi delle correzioni. :confused: Io applico queste benedette correzioni, ma il risultato è peggio di prima. :muro: Qualcuno sa dirmi il perché? Penso che a livello sintattico non ci siano problemi, per quanto riguarda l'indept; sostengo che i problemi stiano a livello logico matematico, e non riesco proprio a capire quali siano. :muro:
#include <iostream>
#include <ctime>
#include <cmath>
#define var() (rand()%5)+1
#include <cstdlib>
using namespace std;
int main(){
cout.precision(15);
int n;
int i;
int ferma;
cout << "Inserisci il numero di giocatori ";
cin >> n;
int p[n];
int rg[25] = {1,3,4,2,5,1,3,2,3,4,5,1,2,3,2,2,1,3,5,4,3,2,1,3,5};
// Queste sono le risposte giuste.
int rc[25];
for(int i=0; i<n; i++){
for(int l=0; l<25; l++){
rc[l] = var();
if (rc[l] == rg[l]){
p[l] = p[l] + 5;
}
}
}
int somma = 0;
double somma2 = 0;
int media;
double dvstd;
for (int i=0; i<n; i++){
somma = somma + p[i];
cout << somma<< endl;
somma2 = somma2 + p[i]*p[i];
}
cout << somma<< endl;
media = somma/n;
dvstd = sqrt(somma2/n - media*media);
cout << "La media viene: "; cout << media << endl;
cout << "La deviazione standard viene: "; cout << dvstd << endl;
cin >> ferma;
return 0;
}
Vi ringrazio moltissimo. Ciao.
Questo è il programma non corretto, la nostra versione prima che venisse corretta.
#include <iostream>
#include <ctime>
#include <cmath>
#define var() (rand()%5)+1
using namespace std;
int main(){
cout.precision(4);
int n;
int i;
int ferma;
cout << "Inserisci il numero di giocatori ";
cin >> n;
int vettore[n];
int rg[25] = {2,1,5,3,4,2,1,4,5,2,5,3,3,4,1,3,5,3,2,2,5,2,4,3,1};
// Queste sono le risposte giuste.
int rc[25];
int somma = 0;
int k = 0;
for(int i=0; i<n; i++){
for(int l=0; l<25; l++){
rc[l] = var();
if (rc[l] == rg[l]){
somma += 5;
k += 1;
}
}
}
int media = 0;
media = somma/n;
int somma2 = 0;
float dvstd = 0;
for (int i=0; i<k; i++){
somma2= somma2+ ((5-media)*(5-media));
}
dvstd = sqrt(somma2/k);
// (nel programma i valori validi sono contenuti in "k")
cout << "La media viene: "; cout << media << endl;
cout << "La deviazione standard viene: "; cout << dvstd << endl;
// Il calcolo della deviazione è basato esclusivamente su valori validi (5)
cin >> ferma;
return 0;
}