|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#41 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
credo di aver risolto,stasera quando ho finito magari vi posto il codice e mi dite se cè qualcosa che nn va..
Cmq cionci il codice che hai scritto tu mi da errore,cioè..ho provato anche quel frammento che mi avevi scritto tu e mi fa le stesse cose.. E' come se sbagliasse a fare la prima allocazione,xche le altre le fa bene.
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#42 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
A me il frammento che ho scritto io funziona bene...
Fammi vedere cosa ti da in output... |
|
|
|
|
|
#43 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
partendo da un capitale di 5 x arrivare a 10 mi scrive
5.15 1.29544e-320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8.74262e-312 9.41 9.7 10
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#44 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
C'era un'errore di rpecedenza sugli operatori * e ?
Codice:
double *realloca(double *src,int dim_src,int new_dim)
{
double *dst=NULL;
if(src!=NULL && dim_src>0 && new_dim>0)
{
dst = new double[new_dim];
memcpy(dst,src,sizeof(double)*((dim_src>new_dim)?new_dim:dim_src));
delete[] src;
}
if(src==NULL && new_dim>0) //prima allocazione
dst=new double[new_dim];
if(src!=NULL && dim_src>0 && new_dim==0) //deallocazione
delete[] src;
return dst;
}
|
|
|
|
|
|
#45 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
ora è tutto perfetto!mannaggia ste parentesi..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#46 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
solo una cosa..
v=realloca(v,v_dim,v_dim+10); questo è il richiamo,ma se metto +1 cosa cambia?
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#47 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#48 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
ok..un'altra cosa..
Codice:
if(src!=NULL && dim_src>0 && new_dim==0) //deallocazione delete[] src; ma se io dopo aver allocato 20 elementi,vado a richiamare la funzione principale e me ne occorre solo 10 posso cancellare gli altri 10?
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#49 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se 20 sono già allocati puoi ridimensionare il vettore passando come nuova dimensione 10...
|
|
|
|
|
|
#50 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
qua i problemi nn finiscono mai..quando scrivo sui file mi dai errore!
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#51 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
la funzione che richiama la prima scrittura sui file
Codice:
file(vett,vett2); la funzione file Codice:
void file(double *&v,double *&v2)
{
fstream informazioni;
fstream uscite;
int cod;
float cap_ini,n,anni_maturazione;
double cap_fin;
char nome[20];
clrscr;
fflush(stdin);
cout << "dimmi nome file da aprire ";
cin.getline(nome,20);
informazioni.open(nome,ios::in);
uscite.open("uscite.txt",ios::out);
uscite.close();
if(!informazioni)
{
cout << "file inesistente";
getch();
}
else
{
while(informazioni >> cod >> cap_ini >> n)
{
if(cod==1)
{
cout << "attenzione,sta per essere calcolato gli anni che occoreranno";
cout << " per raggiungere " << n;
cout << " da un capitale di " << cap_ini << endl;
cout << "Premere un tasto per continuare";
getch();
anni_maturazione=anni(cap_ini,n,0,v2,0);
cout << "\nGli anni sono : " << anni_maturazione << endl;
scrivi_file(anni_maturazione,cap_ini,n);
}
if(cod==2)
{
cout << "attenzione,sta per essere calcolato il capitale che ";
cout << " raggiungerai dopo " << n;
cout << " partendo da un capitale di " << cap_ini << endl;
cout << "Premere un tasto per continuare";
getch();
cap_fin=cap_finale(cap_ini,n,0,v,0);
cout << "\nil capitale e' " << cap_fin << endl;
scrivi_file2(cap_fin,n,cap_ini);
}
}
}
informazioni.close();
}
dove è l'errore? la prima volta me l'alloca,la seconda mi da errore..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#52 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
anni_maturazione=anni(cap_ini,n,0,v2,0);
cap_fin=cap_finale(cap_ini,n,0,v,0); L'ultimo parametro deve essere una variabile di tipo int...in tutti i compilatori moderni questo è un errore !!! |
|
|
|
|
|
#53 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
giusto xche alle funzione passo x indirizzo quel valore,e loro trovandosi uno 0 nn possono modificarlo,vero?
dici che mi conviene usare 4 vettori distinti? farei meno casino..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#54 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Io dico che ti basterebbe usare un solo vettore...mantendo la sua dimensione in un int...
O semplicemente ne potresti usare uno nella file e uno nel main... Senza dover passare il vettore come parametro... Ma i parametri n e cap_ini perchè non li richiedi ? Dentro file li devi richiedere o farteli passare dal main... Se te li fai passare dal main allora puoi anche mantenere i risultati in due vettori scrivendoli sul file direttamente senza ricalcolarli... |
|
|
|
|
|
#55 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
nn li faccio passare dal main ma li leggo da un file..
avevo pensato a 4 vettori xche 2 per le funzioni che leggo da tastiera e altri 2 x vettori che leggo da file.. uso i vettori xche devo farci il grafico..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#56 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
x ora ho deciso di utilizzare 2 vettori..se poi riuscirò a capire come si fa con uno ne metterò uno..un'altra cosa..quando vado a fare il grafico se metto dei valori alti mi esce dal programma..ti posto il codice..
Codice:
void grafico(int n,double finale,double *v,double *v2,int sc) //Funzione che disegna il grafico dell'andamento
{ //del capitale negli anni
clrscr();
//INIZIALIZZAZIONE SCHEDA GRAFICA
int driver_grafico=VGA;
int modalita_grafica=VGAHI;
int errore; // Se si è verificato un errore nell'inizializzazione della
//grafica, ne segnala il tipo.
initgraph(&driver_grafico, &modalita_grafica, "C:\\BC5\\BGI\\");
errore = graphresult();
//SE SI E' VERIFICATO UN ERRORE LO STAMPA
if (errore) // E POI ESCE DAL PROGRAMMA
{
cout << "ERRORE: " << grapherrormsg(errore) << endl;
getch();
exit(1);
}
else //ALTRIMENTI CONTINUA
{
int x,aint,bint,maxx=getmaxx(),maxy=getmaxy();; //Dichiarazione
long double adouble,bdouble,cdouble,y[2];
line(2,maxy-15,maxx,maxy-15); //Asse orizzontale
line(15,maxy-2,15,15); //Asse verticale
if (sc==1)
{
y[0]=0;
y[1]=v[0];
cdouble=y[1];
adouble= (maxy-27)/(finale-y[1]);
for(x=0; x<n; x++)
{
y[0]=y[1];
y[1]=v[x];
bdouble=adouble*(y[0]-cdouble);
aint=bdouble;
bdouble=adouble*(y[1]-cdouble);
bint=bdouble;
setcolor(RED); line(12,maxy-15-aint,17,maxy-15-aint);
setcolor(RED); line((x+1)*((maxx-15)/n),maxy-12,(x+1)*((maxx-15)/n),maxy-17);
setcolor(4);
line(15+x*((maxx-15)/n),maxy-15-aint,15+(x+1)*((maxx-15)/n),maxy-15-bint);
}
}
else
{
y[0]=0;
y[1]=v2[0];
cdouble=y[1];
adouble= (maxy-5)/(finale-y[1]);
for(x=0; x<n; x++)
{
y[0]=y[1];
y[1]=v2[x];
bdouble=adouble*(y[0]-cdouble);
aint=bdouble;
bdouble=adouble*(y[1]-cdouble);
bint=bdouble;
putpixel(2,maxy-5-aint,6);
putpixel((1+x)*((maxx-5)/n),maxy-2,5);
setcolor(4);
line(5+x*((maxx-5)/n),maxy-5-aint,5+(x+1)*((maxx-5)/n),maxy-5-bint);
}
}
getch();
}
closegraph();
}
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#57 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Forse perchè vai al di fuori della viewport...
Devi crearti un fattore di scala a cui rapportare tutte le dimensioni... Ad esempio: double fattY = (maxy-30) / max(v, n); double fattX = (maxx-30) / n; double max(double *v, int n); è una semplice funzione che cerca il max del vettore... |
|
|
|
|
|
#58 |
|
Senior Member
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
|
non dovrebbe essere per quello leo, lo fa a tutta la classe anche con le funzioni di autoridimensionamento, il prof dice perchè se no vengono troppe iterazioni o roba del genere, comunque sta di fatto che anche con il programma di due ragazzi dell'anno passato da lo stesso errore
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T. |
|
|
|
|
|
#59 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Empoli (firenze)
Messaggi: 1521
|
cioè quale errore alde?
poi cè un piccolo problema,a me il grafico lo inzia a fare nn proprio dall'incontro degli assi ma un poco + qua..circa 20 pixel..devo ancora riguardarlo..e per domani cè da consegnarlo..
__________________
Imac 20" + iphone 4 16gb + MacBook Pro 13" Concluso affari con: bottoni,skino,semmy83,alex_ |
|
|
|
|
|
#60 |
|
Senior Member
Iscritto dal: Sep 2002
Città: vinci-spicchio
Messaggi: 530
|
che se dai troppi anni (in genere più di 110 con numeri mediamente grossi) o la differenza tra cap iniziale e finale è grossotta esce direttamente dal programma e chiude la finestra sotto dos.
Per domani o seri dubbi che qualcheduno consegni visto che siamo circa in 4 gruppi un po' più avanti degli altri
__________________
Intel Pentium DualCore E2140 1,60 GHz , Asus P5LD2 R2.0,Sapphire x600xt 128Mb,hauppauge winTV,2x256Mb Ddr2 Vitesta 533Mhz,western digital caviar 160gb, seagate 20gb 5400giri, maxtor 40gb 7200giri, dvd+-rw gigabyte(BTC) 4x,Samsung writemaster dvd duallayer 18x , edimax wireless<-->router D-link G604T. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:52.



















