AYAMY
24-01-2007, 19:28
Ciao a tutti.. ho questo problemino.. dovrei salvare dei NUMERI CON VIRGOLA in un array o vettore che si voglia ... il codice che mi genera i numeri secondo una determinata formula matematica già l'ho fatto e va bene...lo trovate poco sotto... adesso però dovrei salvare tutti questi valori all'interno di un array e sceglierne 1 a caso.. qualche idea?
PS: per la lettura a caso io ho pensato di leggere una "delle caselle" dell'array costituito da 100 numeri basandomi sulla lettura del valore della "cella" il cui indice andrei a generarlo in modo casuale (tra 100 numeri appunto)....ADESSO PERO' IL PROBLEMA RESTA SEMPRE LO STESSO COME SALVO I NUMERI IN UN ARRAY?
#include <iostream>
using namespace std;
int main(){
double angle = 180;
// concetto di misura: la misura �data dal valor vero +- una certa incertezza
// data appunto dallo strumento di misurazione
// un buon strumento di misura , come assumiamo che sia la nostra antenna
// ha una precisione dell'ordine del 5% della grandezza misurata che �
// appunto il valore dell'angolo.
// Assumo che l'incertezza abbia un valore pari a 3sigma sfruttando cos�la propriet�
// della distribuzione di Gauss che mi garantisce una probabilit�pari al 99.7%
// di estrarre all'interno del nostro campione la Media della distribuzione
// della popolazione Madre
//IMPLEMENTAZIONE
// scelgo 3sigma = all'incertezza cio�appunto a 5% del valore dell'angolo
float triplo = (0.05*angle);
float singolo = (triplo/3);
float doppio = (singolo*2);
// impongo il valore di 3sigma= alla precisione dell'antenna * angolo non affetto
// da errore (cio�* la Media della distribuzione di Gauss)
int maxuno = ((((int)singolo)));
int maxdue = ((((int)doppio)));
int maxtre = ((((int)triplo)));
srand(time(0)); // inizializzo il seme per il calcolo dei numeri random
for (int i = 1; i <= 68; i++) {
// numero decimale con la virgola per aumentare la precisione o meglio
// la sensibilit�dell'antenna
float fValore = (float)rand() / (float)RAND_MAX;
// valore che pu�assumere un campione della distribuzione
float sim = rand()%maxdue ;
// ci aggiungo anche la parte decimale per avere maggiore precisione
float gauss = (sim)+fValore ;
// mi sposto sull'estremo inferiore della distribuzione centrata in angle
// cio�appunto angle meno triplosigma
float inferiore = (angle - (singolo));
// ho definito un intervallo centrato in Angle di ampiezza 3sigma
// all interno del quale e' contenuto "estrazione"
float estrazione = inferiore + gauss;
//effettuo la conversione in radianti
double conversionerad = (estrazione/57.325);
//return estrazione;
cout << "All'estrazione di " << endl;
cout << estrazione << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << conversionerad << endl;
cout << "radianti" << endl;
cout << i << endl;
}
cout << "INIZIO SECONDA SEZIONE VETTORE" << endl;
for (int i = 69; i <= 81; i++) {
// numero decimale con la virgola per aumentare la precisione o meglio
// la sensibilit�dell'antenna
float fValore = (float)rand() / (float)RAND_MAX;
// valore che pu�assumere un campione della distribuzione
float sim = rand()%maxuno ;
// ci aggiungo anche la parte decimale per avere maggiore precisione
float gauss = (sim)+fValore ;
// mi sposto sull'estremo inferiore della distribuzione centrata in angle
// cio�appunto angle meno triplosigma
float inferiore = (angle - (doppio));
// ho definito un intervallo centrato in Angle di ampiezza 3sigma
// all interno del quale e' contenuto "estrazione"
float estrazione = inferiore + gauss;
//effettuo la conversione in radianti
double conversionerad = (estrazione/57.325);
//return estrazione;
cout << "All'estrazione di " << endl;
cout << estrazione << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << conversionerad << endl;
cout << "radianti" << endl;
cout << i << endl;
}
cout << "INIZIO TERZA SEZIONE VETTORE" << endl;
for (int i = 82; i <= 95; i++) {
// numero decimale con la virgola per aumentare la precisione o meglio
// la sensibilit�dell'antenna
float fValore = (float)rand() / (float)RAND_MAX;
// valore che pu�assumere un campione della distribuzione
float sim = rand()%maxuno ;
// ci aggiungo anche la parte decimale per avere maggiore precisione
float gauss = (sim)+fValore ;
// mi sposto sull'estremo inferiore della distribuzione centrata in angle
// cio�appunto angle meno triplosigma
float inferiore = (angle + (singolo));
// ho definito un intervallo centrato in Angle di ampiezza 3sigma
// all interno del quale e' contenuto "estrazione"
float estrazione = inferiore + gauss;
//effettuo la conversione in radianti
double conversionerad = (estrazione/57.325);
//return estrazione;
cout << "All'estrazione di " << endl;
cout << estrazione << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << conversionerad << endl;
cout << "radianti" << endl;
cout << i << endl;
}
cout << "INIZIO ULTIMA SEZIONE VETTORE" << endl;
for (int i = 96; i <= 100; i++) {
// numero decimale con la virgola per aumentare la precisione o meglio
// la sensibilità dell'antenna
float fValore = (float)rand() / (float)RAND_MAX;
// valore che pu�assumere un campione della distribuzione
float sim = rand()%maxuno ;
// ci aggiungo anche la parte decimale per avere maggiore precisione
float gauss = (sim)+fValore ;
// mi sposto sull'estremo inferiore della distribuzione centrata in angle
// cio�appunto angle meno triplosigma
float inferiore = (angle - (triplo));
// ho definito un intervallo centrato in Angle di ampiezza 3sigma
// all interno del quale e' contenuto "estrazione"
float estrazione = inferiore + gauss;
//effettuo la conversione in radianti
double conversionerad = (estrazione/57.325);
//return estrazione;
cout << "All'estrazione di " << endl;
cout << estrazione << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << conversionerad << endl;
cout << "radianti" << endl;
cout << i << endl;
}
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}
Grazie a tutti in anticipo!!
PS: per la lettura a caso io ho pensato di leggere una "delle caselle" dell'array costituito da 100 numeri basandomi sulla lettura del valore della "cella" il cui indice andrei a generarlo in modo casuale (tra 100 numeri appunto)....ADESSO PERO' IL PROBLEMA RESTA SEMPRE LO STESSO COME SALVO I NUMERI IN UN ARRAY?
#include <iostream>
using namespace std;
int main(){
double angle = 180;
// concetto di misura: la misura �data dal valor vero +- una certa incertezza
// data appunto dallo strumento di misurazione
// un buon strumento di misura , come assumiamo che sia la nostra antenna
// ha una precisione dell'ordine del 5% della grandezza misurata che �
// appunto il valore dell'angolo.
// Assumo che l'incertezza abbia un valore pari a 3sigma sfruttando cos�la propriet�
// della distribuzione di Gauss che mi garantisce una probabilit�pari al 99.7%
// di estrarre all'interno del nostro campione la Media della distribuzione
// della popolazione Madre
//IMPLEMENTAZIONE
// scelgo 3sigma = all'incertezza cio�appunto a 5% del valore dell'angolo
float triplo = (0.05*angle);
float singolo = (triplo/3);
float doppio = (singolo*2);
// impongo il valore di 3sigma= alla precisione dell'antenna * angolo non affetto
// da errore (cio�* la Media della distribuzione di Gauss)
int maxuno = ((((int)singolo)));
int maxdue = ((((int)doppio)));
int maxtre = ((((int)triplo)));
srand(time(0)); // inizializzo il seme per il calcolo dei numeri random
for (int i = 1; i <= 68; i++) {
// numero decimale con la virgola per aumentare la precisione o meglio
// la sensibilit�dell'antenna
float fValore = (float)rand() / (float)RAND_MAX;
// valore che pu�assumere un campione della distribuzione
float sim = rand()%maxdue ;
// ci aggiungo anche la parte decimale per avere maggiore precisione
float gauss = (sim)+fValore ;
// mi sposto sull'estremo inferiore della distribuzione centrata in angle
// cio�appunto angle meno triplosigma
float inferiore = (angle - (singolo));
// ho definito un intervallo centrato in Angle di ampiezza 3sigma
// all interno del quale e' contenuto "estrazione"
float estrazione = inferiore + gauss;
//effettuo la conversione in radianti
double conversionerad = (estrazione/57.325);
//return estrazione;
cout << "All'estrazione di " << endl;
cout << estrazione << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << conversionerad << endl;
cout << "radianti" << endl;
cout << i << endl;
}
cout << "INIZIO SECONDA SEZIONE VETTORE" << endl;
for (int i = 69; i <= 81; i++) {
// numero decimale con la virgola per aumentare la precisione o meglio
// la sensibilit�dell'antenna
float fValore = (float)rand() / (float)RAND_MAX;
// valore che pu�assumere un campione della distribuzione
float sim = rand()%maxuno ;
// ci aggiungo anche la parte decimale per avere maggiore precisione
float gauss = (sim)+fValore ;
// mi sposto sull'estremo inferiore della distribuzione centrata in angle
// cio�appunto angle meno triplosigma
float inferiore = (angle - (doppio));
// ho definito un intervallo centrato in Angle di ampiezza 3sigma
// all interno del quale e' contenuto "estrazione"
float estrazione = inferiore + gauss;
//effettuo la conversione in radianti
double conversionerad = (estrazione/57.325);
//return estrazione;
cout << "All'estrazione di " << endl;
cout << estrazione << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << conversionerad << endl;
cout << "radianti" << endl;
cout << i << endl;
}
cout << "INIZIO TERZA SEZIONE VETTORE" << endl;
for (int i = 82; i <= 95; i++) {
// numero decimale con la virgola per aumentare la precisione o meglio
// la sensibilit�dell'antenna
float fValore = (float)rand() / (float)RAND_MAX;
// valore che pu�assumere un campione della distribuzione
float sim = rand()%maxuno ;
// ci aggiungo anche la parte decimale per avere maggiore precisione
float gauss = (sim)+fValore ;
// mi sposto sull'estremo inferiore della distribuzione centrata in angle
// cio�appunto angle meno triplosigma
float inferiore = (angle + (singolo));
// ho definito un intervallo centrato in Angle di ampiezza 3sigma
// all interno del quale e' contenuto "estrazione"
float estrazione = inferiore + gauss;
//effettuo la conversione in radianti
double conversionerad = (estrazione/57.325);
//return estrazione;
cout << "All'estrazione di " << endl;
cout << estrazione << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << conversionerad << endl;
cout << "radianti" << endl;
cout << i << endl;
}
cout << "INIZIO ULTIMA SEZIONE VETTORE" << endl;
for (int i = 96; i <= 100; i++) {
// numero decimale con la virgola per aumentare la precisione o meglio
// la sensibilità dell'antenna
float fValore = (float)rand() / (float)RAND_MAX;
// valore che pu�assumere un campione della distribuzione
float sim = rand()%maxuno ;
// ci aggiungo anche la parte decimale per avere maggiore precisione
float gauss = (sim)+fValore ;
// mi sposto sull'estremo inferiore della distribuzione centrata in angle
// cio�appunto angle meno triplosigma
float inferiore = (angle - (triplo));
// ho definito un intervallo centrato in Angle di ampiezza 3sigma
// all interno del quale e' contenuto "estrazione"
float estrazione = inferiore + gauss;
//effettuo la conversione in radianti
double conversionerad = (estrazione/57.325);
//return estrazione;
cout << "All'estrazione di " << endl;
cout << estrazione << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << conversionerad << endl;
cout << "radianti" << endl;
cout << i << endl;
}
cout << "Press ENTER to continue..." << endl;
cin.get();
return 0;
}
Grazie a tutti in anticipo!!