|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
[c++] Sempre + difficile...
Ciao a tutti... innanzitutto vi ringrazio per l'aiuto che ho trovato in questo forum....
Vengo subito al dunque... Ho un programma che funziona nel seguente modo: Parte A) crea un serie di valori Parte B) Vede quante volte quel numero di valori deve ripetuto in un determinato vettore da cui fare delle estrazioni Adesso Vorrei creare un vettore finale in cui introdurre tutte le varie ripetizioni dei valori creati.... Come posso fare? Il problema è che non riesco a sommare tutte le ripetizioni per vedere quanto deve essere grande il vettore finale... Cioè ad esempio nella fase A) ho visto che ho questi valori 88-90-92 ecc Nella fase B) ad esempio ho visto che 88 deve starci 3 volte , 90 invece 5 volte e 92 di nuovo 3 Adesso dovrei creami un vettore fatto in questo modo 88 88 88 90 90 90 90 90 92 92 92 Ma come dovrei fare? Questo è il mio codice Per ora sono riuscito a fare soltato la scrittura a video dei valori... come potrei fare per risolvere il problema? Grazie Codice:
#include <iostream>
#include <math.h>
using namespace std;
int main (){
//PARTE A
int valori;
float passo;
float angle;
float minimo;
float massimo;
float triplo;
float singolo;
float frequenzarelativa;
float alla;
int z;
int j;
z=0;
cout << "Inserire il valore dell angolo" << endl;
cin >> angle;
triplo = (0.1*angle);
singolo= (triplo/3);
cout << "Inserire il numero di valori in 3 sigma" << endl;
cin >> valori ;
passo = (triplo)/valori;
minimo = angle-triplo;
massimo = angle+triplo;
float vettorex[2*valori+1];
for (int i = 1; i <= 2*valori+1 ; i++)
{
vettorex[i]=minimo+(z*passo);
z++;
//cout << vettorex[i] << endl;
//FINE PARTE A
//INIZIO PARTE B
alla= -(((vettorex[i]-angle)*(vettorex[i]-angle))/(2*singolo*singolo ));
frequenzarelativa =(1/(singolo*(sqrt(2*3.14159))))*(exp(alla));
float frequenzaassoluta=frequenzarelativa*angle;
int ripetizioni= (int)frequenzaassoluta + 1;
float vettorey[ripetizioni];
for (int j=1; j <=ripetizioni; j++)
{
vettorey[j]=vettorex[i];
}
//cout << "frequenza Relativa" << endl;
//cout << frequenzarelativa << endl;
//cout << "frequenza Assoluta" << endl;
//cout << frequenzaassoluta << endl;
//cout << "Ripetizioni" << endl ;
//cout << ripetizioni << endl ;
//cout << " " << endl;
//cout << "VETTORE TOTALE" << endl;
// STAMPA DEI VALORI CHE DOVREI ANDARE A METTERE NEL VETTORE FINALE
for (int j=1; j <=ripetizioni; j++)
{
cout << vettorey[j] << endl;
}
}
cout << "3sigma" << endl;
cout << triplo << endl;
cout << "ecco il passo" << endl;
cout << passo << endl;
cin.get();
cin.get();
cin.get();
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
... io avevo pensato di risolvere il problema nel seguente modo...
Mi creò un vettorefinale con un numero di celle largamente maggiore di quello a cui il programma potrebbe arrivare con le varie ripetizioni dei singoli numeri poi con questo ciclo for con dentro 2 if andavo a creare il vettore finale Codice:
for (int j=1; j <=ripetizioni; j++)
{
if (j==k){
vettorey[j]=vettorex[i];
vettorefinale[j]=vettorey[j];
}
else {
vettorey[j]=vettorex[i];
vettorefinale[k]=vettorey[j];
}
}
Poi invece quando il vettore delle ripetizioni del singolo numero veniva lasciato perchè si arrivava al numero massimo delle ripetizioni e quindi j tornava ad 1 nella successiva iterazioni invece K continuava ad essere incrementato i valori delle caselle del nuovo vettore delle iterazioni veniva messe nel vettore finale in posizione k e non , invece , nella prima posizione del vettore.. MA NON SO PERCHE' il programma mi si avvia ma poi dopo aver richiesto i valori mi da errore di SISTEMA !?!?!? Please datemi una mano!!! Questo è il codice Totale Codice:
#include <iostream>
#include <math.h>
using namespace std;
int main (){
int valori;
float passo;
float angle;
float minimo;
float massimo;
float triplo;
float singolo;
float frequenzarelativa;
float alla;
int z;
int j;
int k;
z=0;
float vettorefinale[1000];
cout << "Inserire il valore dell angolo" << endl;
cin >> angle;
triplo = (0.1*angle);
singolo= (triplo/3);
cout << "Inserire il numero di valori in 3 sigma" << endl;
cin >> valori ;
passo = (triplo)/valori;
minimo = angle-triplo;
massimo = angle+triplo;
float vettorex[2*valori+1];
for (int i = 1; i <= 2*valori+1 ; i++)
{
vettorex[i]=minimo+(z*passo);
z++;
//cout << vettorex[i] << endl;
alla= -(((vettorex[i]-angle)*(vettorex[i]-angle))/(2*singolo*singolo ));
frequenzarelativa =(1/(singolo*(sqrt(2*3.14159))))*(exp(alla));
float frequenzaassoluta=frequenzarelativa*angle;
int ripetizioni= (int)frequenzaassoluta + 1;
float vettorey[ripetizioni];
for (int j=1; j <=ripetizioni; j++)
{
if (j==k){
vettorey[j]=vettorex[i];
vettorefinale[j]=vettorey[j];
}
else {
vettorey[j]=vettorex[i];
vettorefinale[k]=vettorey[j];
}
}
//cout << "frequenza Relativa" << endl;
//cout << frequenzarelativa << endl;
//cout << "frequenza Assoluta" << endl;
//cout << frequenzaassoluta << endl;
//cout << "Ripetizioni" << endl ;
//cout << ripetizioni << endl ;
//cout << " " << endl;
//cout << "VETTORE TOTALE" << endl;
// CONTEGGIO DELLA DIMENSIONE MASSIMA DEL VETTORE FINALE
/*for (int j=1; j <=ripetizioni; j++)
{
k++;
cout << vettorey[j] << endl;
}
}
*/
// FINE CONTEGGIO ....POI C'E' IL RELATIVO COUT
//CONTEGGIO DIMENSIONE VETTORE
/*cout << k << endl;
float vettorefinale[k];
for (int d=1; d <=k; d++)
{
vettorefinale[d]=vettorey[j];
}
*/
cout << "3sigma" << endl;
cout << triplo << endl;
cout << "ecco il passo" << endl;
cout << passo << endl;
cin.get();
cin.get();
cin.get();
}
}
/*
POSSIBILE IMPLEMENTAZIONE VETTORE FINALE
for (int j=1; j <=ripetizioni; j++)
{
if (j = k)
{
vettorefinale[j]=vettorey[j];
}
else
{
vettorefinale[k]=vettorey[j];
}
k++;
}
}
/* CONTEGGIO DIMENSIONE VETTORE --> nb il K++ va dentro il ciclo for e non fuori
cout << k << endl;
float vettorefinale[k];
for (int d=1; d <=k; d++)
{
vettorefinale[d]=vettorey[j];
}
*/
/*
int j;
int vettore[j];
cin >> j ;
for (int i=1; i<=j; i++){
vettore[i]=1+i;
cout << vettore[i] << endl;
}
cin.get();
cin.get();
return 0;
}
*/
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
attento, i vettori partono a contare dallo 0, non da 1
__________________
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
bhè penso di si.. il software fino ad adesso ha sempre funzionato...e i dati in uscita erano corretti.. quindi quella istruzione la prendeva di sicuro...
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jun 2003
Città: Como
Messaggi: 5377
|
Quote:
devi partire da 0 e andare fino a < VALORE FINALE e non <= ps: da quando si possono usare vettori dinamici???? pps.. minchia sono rimasto troppo al c Ultima modifica di Dragonx21 : 25-02-2007 alle 17:33. |
|
|
|
|
|
|
#7 | ||
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
Quote:
Quote:
Codice:
for (int j=1; j <=ripetizioni; j++)
{
if (j==k){
vettorey[j]=vettorex[i];
vettorefinale[j]=vettorey[j];
}
else {
vettorey[j]=vettorex[i];
vettorefinale[k]=vettorey[j];
}
}
|
||
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Jun 2003
Città: Como
Messaggi: 5377
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2007
Messaggi: 15
|
Io dico che il C++ è troppo sofisticato, e questo porta a produrre poco, almeno chè non si conduca un progetto condiviso e ben organizzato, quindi ti conviene cambiare linguaggio, sto c++ è troppo scottante..
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Quel codice lo puoi tradurre letteralmente in Java o C# e non funzionerebbe lo stesso, quindi anche Java e C# sono troppo sofisticati? |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
cosa non va in K?
devo farlo partire da 0? |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Tutti gli indici dei vettori devono partire da 0...
Se vuoi scorrere gli elementi di un vettore tramite un for, supponendo che il vettore abbia dimensione N elementi, si fa così: for(int i = 0; i < N; i++) |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 704
|
ragà... finalmente ho risolto...ma non lo grido troppo forte..perchè ho paura che da un momento all'altro l'errore possa saltare fuori...
Codice:
for (int j=1; j <=ripetizioni; j++)
{
k++;
//cout << vettorey[j] << endl;
vettorez[k]=vettorey[j];
}
}
cout << "---Numero di Valori del Vettore Finale---" << endl;
cout << k << endl;
cout << "---Ecco il Vettore Finale---" << endl;
for (int s=1; s <=k; s++)
{
cout << vettorez[s] << endl;
}
Ciao e grazie a tutti.. siete stati come sempre il TOP!!! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:07.




















