bus error eller segmentation fault

Avdelningen för programmering, nätverk samt alternativa OS.
Post Reply
User avatar
Mitra
Posts: 1517
Joined: 2002-04-07 2:47:49
Location: Hässleholm
Contact:

bus error eller segmentation fault

Post by Mitra »

här är koden jag skrivit.. ska vara en stam till lite meravancerade grejer..

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


 
varför 100% när 60% duger mer än väl?
User avatar
derfian
Posts: 472
Joined: 2004-02-13 0:18:46
Location: Dorotea / Linköping
Contact:

Post by derfian »

Tja, koden kompilerar inte ens med gcc-4.1, och med lite snabba fixar så verkar den dö på sscanf.
User avatar
Mitra
Posts: 1517
Joined: 2002-04-07 2:47:49
Location: Hässleholm
Contact:

Post by Mitra »

derfian wrote:Tja, koden kompilerar inte ens med gcc-4.1, och med lite snabba fixar så verkar den dö på sscanf.
yes min polare såg det och sa att jag glömde & framför varablerna i sscanf argumenten... så nu funkar det
varför 100% när 60% duger mer än väl?
Post Reply