PDA

Visualizza la versione completa : [C++]problema programa dado


bovy
20-05-2008, 23:58
ho un testo di un programma da fare che è il seguente: dopo che è stato riempito un vettore di 1000 elementi che corrispondono al lancio di 2 dadi, tramite una funzione nella quale si calcola la frequenza con la quale ogni numero ( da 1 a 12) è uscito, riempire un vettore finale nel quale andranno memorizzate le frequenze trovate tramite la funzione, e stampare il vettore finale.

il programma non è complesso in se, anzi, però la questione del calcolo delle frequenze ecc mi complica la vita.

mi potete dare una mano? grazie

Ippo343
21-05-2008, 16:33
Fatteli da solo i compiti, specie se sono così banali.

alka
21-05-2008, 18:14
Originariamente inviato da bovy
mi potete dare una mano? grazie
Inizia l'esercizio e proponi la tua soluzione; in caso di problemi, descrivili e qualcuno vedrà di darti una mano.

Chiedere di fare l'esercizio intero è un po' troppo... :)

bovy
21-05-2008, 18:37
-__- ^^ io volevo sapere come potevo fare a calcolare la frequenza di uscita dei numeri e se secondo voi il testo significa la frequenza del tipo: in un solo lancio oppure in molti lanci...non ho chiesto di farmi il compito

oregon
21-05-2008, 18:48
Originariamente inviato da bovy
-__- ^^ io volevo sapere come potevo fare a calcolare la frequenza di uscita dei numeri e se secondo voi il testo significa la frequenza del tipo: in un solo lancio oppure in molti lanci...non ho chiesto di farmi il compito

Il testo mi sembra chiaro ...

1) hai un vettore di 1000 numeri compresi tra 1 e 12 che corrispondono a 1000 lanci ...

2) esamina i 1000 numeri e vedi quante volte contengono 1, 2, 3, ... 12 ...

3) alla fine di questo esame, avrai un vettore di 12 elementi che conterranno il numero di volte che e' uscito il corrispondente numero

Ad esempio, alla fine avrai un vettore cosi'

1 203
2 82
3 90
...
12 82

che significhera' che l'1 è uscito 203 volte ... e cosi' via ...

bovy
21-05-2008, 19:32
io l'ho fatto così...


/*Programma che riempito un vettore di n elementi compresi tra 1 e 12,
calcoli tramite l'utilizzo di una funzione, che ha per argomenti il numero
del quale bisogna trovare la frequenza e la dimensione del vettore,
la frequenza di ogni elemento del vettore*/

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

//Inizializzo le variabili

const int lun=1000; //grandezza del vettore
int cont=0; //contatore
int vett[1000]; //vettore che contiene elementi
int numero=0; //variabile a cui viene assegnato un numero tra 1 e 12
int n=0; // contatore di presenza di un numero
int freq(); //funzione all'interno della quale viene contata la presenza dei numeri




int freq(int cifra ,int num)
{
n=0;
for(cont=0; cont<num; cont++)
{
if(vett[cont]==cifra)
{
n++;
}
}
return n;

}

main()
{

srand(time(NULL));

cout<<"Calcolo la frequenza di uscita dei numeri in 1000 lanci di 2 dadi:"<<endl;
for(cont=0; cont<lun; cont++)
{
vett[cont]=rand()%12+1;
}

for(cont=0; cont<lun; cont++)
{
cout<<vett[cont]<<" ";
}

for(numero=1; numero<13; numero++)
{
cout<<"\nIl numero"<<" "<<numero<<" e' presente"<<" "<<freq(numero,lun)<<" "<<"volte"<<endl;
}


getchar();
getchar();
}



ditemi se può andare..anche se non capisco cosa serva mettere le frequenze in un vettore quando posso fare così, però ditemi lo stesso se può andare

oregon
21-05-2008, 19:39
Originariamente inviato da bovy
ditemi se può andare..

Prima di dirti qualcosa, hai errori di compilazione? Errori di runtime? Fa quello che deve fare?

Perche' costringi a provare il programma se puoi dire tu se ci sono problemi ?

bovy
21-05-2008, 19:42
funziona tutto...non mi riferivo a quello, volevo sapere se secondo voi avevo interpretato correttamente il testo

lo so che non ho messo le frequenze in un vettore, ma non ne vedevo l'utilità, ma x il resto?

oregon
21-05-2008, 19:50
Va bene ... a parte delle imperfezioni e qualche miglioramento ... pero', dato che indica di riempire e visualizzare il vettore, non farlo sarebbe un errore ...

E poi non dice di visualizzare i 1000 numeri ...

Farei queste piccole modifiche ...



/*Programma che riempito un vettore di n elementi compresi tra 1 e 12,
calcoli tramite l'utilizzo di una funzione, che ha per argomenti il numero
del quale bisogna trovare la frequenza e la dimensione del vettore,
la frequenza di ogni elemento del vettore*/

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

using namespace std;

//Inizializzo le variabili

const int LUN=1000; //grandezza del vettore

int vett[LUN]; //vettore che contiene elementi
int vfre[12];

int freq(int numero)
{
int n, cont;

for(n=cont=0; cont<LUN; cont++)
if(vett[cont]==numero)
n++;

return n;
}

main()
{
int cont, numero;

srand(time(NULL));

cout<<"Calcolo la frequenza di uscita dei numeri in 1000 lanci di 2 dadi:"<<endl;

for(cont=0; cont<LUN; cont++)
vett[cont]=rand()%12+1;

for(numero=1; numero<13; numero++)
{
vfre[numero-1]=freq(numero);

cout << "\nIl numero " << numero << " e' presente " << vfre[numero-1] << " volte" << endl;
}

getchar();
}


Se vuoi apportare un miglioramento, rendi tutte le variabili e vettori locali ...

bovy
21-05-2008, 20:52
ok...grazie mille dei consigli

Loading