Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-01-2007, 18:28   #1
AYAMY
Senior Member
 
L'Avatar di AYAMY
 
Iscritto dal: Dec 2003
Messaggi: 704
ARRAY , VETTORE e SALVATAGGIO VALORI

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!!
AYAMY è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 22:21   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
L'indentazione dov'è ? Così ci si capisce poco... Usa il tag code del forum...

Spigati cosa intendi per "salvare"...

Vuoi mettere i vari numeri in un vettore ?

double vett[100];

Nei vari for memorizzi i numeri nel vettore tramite l'indice...vett[i-1]
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 22:30   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2790
Codice:
#include <iostream>
#include <time.h>
#include <stdlib.h>

using namespace std;

typedef struct{
    float degree;
    double rad;
    }angolo;

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

angolo angoli[100];

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);
    angoli[i-1].degree=estrazione;
    angoli[i-1].rad =conversionerad;
    }
    
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);
    angoli[i-1].degree=estrazione;
    angoli[i-1].rad=conversionerad;
    }
    
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);
    angoli[i-1].degree=estrazione;
    angoli[i-1].rad=conversionerad;
    }

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);    
    angoli[i-1].degree=estrazione;
    angoli[i-1].rad=conversionerad;
    }

//return estrazione;
int i=rand()%100;
cout << "All'estrazione di " << endl;
cout << angoli[i].degree << endl;
cout << "Gradi dell'Angolo percepito corrispondono" << endl;
cout << angoli[i].rad << endl;
cout << "radianti" << endl;
cout << i << endl;
    
cout << "Press ENTER to continue..." << endl; 
cin.get();
return 0;
}
Te l'ho scritto con un array di strutture, così vedi anche una cosa in più...
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2007, 22:34   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Nota che tutto questo codice può essere messo in una funzione con max e l'angolo come parametri:

// 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);
angoli[i-1].degree=estrazione;
angoli[i-1].rad=conversionerad;
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2007, 07:48   #5
AYAMY
Senior Member
 
L'Avatar di AYAMY
 
Iscritto dal: Dec 2003
Messaggi: 704
grazie x l'info.. ma poi in notturna , vedendo qualche esempio non c'ho messo molto a risolvere il problema del salvataggio:
ho aggiunto
float numGenerati[100]; (ma mi sa che dovrei mettere double...poi vedo)
e per ogni ciclo ho fatto appunto....
numGenerati[i]=estrazione;

Mi pare che vada bene...Secondo voi? ho fatto qualche errore di cui non mi sono reso conto?
Grazie ancora!!

PS: una cosa non ho capito...
Codice:
angoli[i-1].degree=estrazione;
angoli[i-1].rad=conversionerad;
in sostanza cosa significano?
AYAMY è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2007, 08:44   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Come ti dicevo puoi creare una funzione con il codice sopra...rendenderebbe il tutto molto + leggibile... Anche l'inserimento di qualche riga vuota, senza commenti, farebbe bene ogni tanto.

Devi fare numGenerati[i-1]=estrazione; perchè il tuo ciclo va da 1 a 100, mentre un vettore di 100 elementi va da 0 a 99. Metti pure double.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Exodus è il nuovo Mass Effect? Il...
Lockdown Mode cambia il volto di ChatGPT...
Guild Wars 3 è ufficiale: ArenaNe...
I giocatori voltano le spalle a Linux? L...
Instagram Plus arriva in Italia: cosa in...
XBOX: la nuova CEO non ha ancora le idee...
Intel non ha intenzione di abbandonare i...
La AI Mode sarà attiva di default...
Marvel's Wolverine non sarà un op...
Star Wars Zero Company esce ad agosto: n...
Bonus Decoder: fino al 70% di sconto con...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v