ciao ragazzi,
mi sono da poco riavvicinato al mondo del c++ dopo anni che non facevo nulla (prima non è che facessi granchè, solo un corso universitario). Ho creato questo codice che vi posto di seguito, compila senza problemi, il problema è che avviato l'exe crasha. Per l'esattezza va in crash dove ho sottolineato il codice (cioè il secondo puntatore di quella lista di definizioni) e succede a prescindere dall'ordine con cui li dichiaro ( cioè sempre al secondo)
mi date una mano ?? grazie !!
codice:
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
using namespace std;
class pianeta
{
public:
double massa;
double velx, vely;
double xi, yi;
double inserisci_massa( );
double inserisci_vel( );
double inserisci_cin( );
};
double pianeta::inserisci_massa( )
{
cout << "inserire la massa del pianeta" << endl;
cin >> massa;
cout << endl;
}
double pianeta::inserisci_vel( )
{
cout << "il modulo della velocita' " << endl;
double modvel;
cin >> modvel;
cout << "inserire l'angolo che la velocita' forma con l'asse X " << endl;
double angvel;
cin >> angvel;
velx = cos(angvel*3.14/180)*modvel;
vely = sin(angvel*3.14/180)*modvel;
}
double pianeta::inserisci_cin( )
{
cout << "inserire la X iniziale" << endl;
cin >> xi;
cout << "inserire la Y iniziale" << endl;
cin >> yi;
}
int main()
{
const double massa_sole=500000;
const double costante_grav=6.67*pow(10,-11);
const double intervallo=0.01;
ofstream output;
output.open("evoluzione_pianeti.txt");
pianeta ttt;
ttt.inserisci_massa( );
ttt.inserisci_vel();
ttt.inserisci_cin( );
cout << "la massa del pianeta e' " << ttt.massa << endl;
double vel = sqrt(pow(ttt.velx,2)+pow(ttt.vely,2));
cout << "la velocita' iniziale e' " << vel << endl;
cout << "la posizione iniziale del pianeta e' (" << ttt.xi << "," << ttt.yi << ")" << endl;
cout << "quante iterazioni vuoi che faccia (int) ? " << endl;
cout << "vx" << ttt.velx << "vy" << ttt.vely << endl;
double *pvelx=NULL;
*pvelx=ttt.velx;
double iterazioni;
cin >> iterazioni;
double *pvely=NULL;
*pvely=ttt.vely;
double angi=acos((ttt.xi)/(sqrt(pow(ttt.xi,2)+ pow(ttt.yi,2))));
double *pang=NULL;
*pang = angi;
double *pxi=NULL;
double *pyi=NULL;
*pxi=ttt.xi;
*pyi=ttt.yi;
double xt, yt, angt, x, velox, y, veloy, ang, vyt, vxt;
for(int i=1; i<iterazioni; i++)
{
x=*pxi;
velox=*pvelx;
ang=*pang;
y=*pyi;
veloy=*pvely;
xt=x+velox*0.01+((massa_sole)/(2*(pow(x,2)+pow(y,2))))*cos(ang*3.14/180)*0.0001;
yt=y+veloy*0.01+((massa_sole)/(2*(pow(x,2)+pow(y,2))))*sin(ang*3.14/180)*0.0001;
vxt=velox+((massa_sole)/(pow(x,2)+pow(y,2)))*cos(ang*3.14/180)*0.01;
vyt=veloy+((massa_sole)/(pow(x,2)+pow(y,2)))*sin(ang*3.14/180)*0.01;
angt=acos(xt/(sqrt(pow(xt,2)+pow(yt,2))));
output << xt << " " << yt << endl;
*pxi=xt;
*pyi=yt;
*pvelx=vxt;
*pvely=vyt;
*pang=angt;
}
output.close();
return 0;
}