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; }

Rispondi quotando
