hur som, grejen är att om jag compilerar och kör så får jag ett fel(se tråd-titel)
jag antar att det har något med att jag skriver in i n+1 array och sedan accessar den igen..eller? (hoppas ni förstår vad jag menar, om ni kan c elelr c++ borde ni säker se det ändå)
hur som om någon kunde hjälpa mig så vorde det trevligt
(btw: måste jag använda pointers istället, och isf i vilken bemärkelse?)
här kommer koden:
Code: Select all
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
main(int argc, char* argv[])
{
float mass1rpx = 1,
mass1rpy = 0,
mass2rpx = -1,
mass2rpy = 0,
modxplus,
modxminus,
modyplus,
modyminus,
dt = 0.005,
x[10001],
y[10001],
vx[10001],
vy[10001],
ax[10001],
ay[10001],
mass1,
mass2,
xzero,
yzero,
vxzero,
vyzero,
df[10001],
dg;
int n;
FILE *output;
output = fopen("data.dat", "w");
sscanf(argv[1], "%f", mass1);
sscanf(argv[2], "%f", mass2);
sscanf(argv[3], "%f", xzero);
sscanf(argv[4], "%f", yzero);
sscanf(argv[5], "%f", vxzero);
sscanf(argv[6], "%f", vyzero);
x[0] = xzero;
y[0] = yzero;
vx[0] = vxzero;
vy[0] = vyzero;
for(n=0; n < 10000; ++n)
{
modxplus = sqrt((x[n]+mass1rpx)*(x[n]+mass1rpx)*(x[n]+mass1rpx)*(x[n]+mass1rpx)*(x[n]+mass1rpx)*(x[n]+mass1rpx));
modxminus = sqrt((x[n]-mass2rpx)*(x[n]-mass2rpx)*(x[n]-mass2rpx)*(x[n]-mass2rpx)*(x[n]-mass2rpx)*(x[n]-mass2rpx));
modyplus = sqrt((y[n]+mass1rpy)*(y[n]+mass1rpy)*(y[n]+mass1rpy)*(y[n]+mass1rpy)*(y[n]+mass1rpy)*(y[n]+mass1rpy));
modyminus = sqrt((y[n]-mass2rpy)*(y[n]-mass2rpy)*(y[n]-mass2rpy)*(y[n]-mass2rpy)*(y[n]-mass2rpy)*(y[n]-mass2rpy));
ax[n] = -mass1*((x[n]+mass1rpx)/(modxplus)) - mass2*((x[n]-mass2rpx)/(modxminus));
ay[n] = -mass1*((y[n]+mass1rpy)/(modyplus)) - mass2*((y[n]-mass2rpy)/(modyminus));
vx[n+1] = vx[n] + ax[n]*dt;
vy[n+1] = vy[n] + ay[n]*dt;
x[n+1] = x[n] + vx[n]*dt + (ax[n]*(dt*dt))/2;
y[n+1] = y[n] + vy[n]*dt + (ay[n]*(dt*dt))/2;
df[n+1] = (n+1)*dt;
fprintf(output, "%f %f %f", df[n+1], x[n+1], y[n+1]);
}
fclose(output);
}