C言語のプログラムなのですが、2点の座標(SとR)を指定して片方からも
C言語のプログラムなのですが、2点の座標(SとR)を指定して片方からもう片方への道筋を座標でcsvファイルに記述していくプログラムを作りたいのですが、うまく動きません。
参照渡しの所が間違っている様な気もするのですがわかりません。わかる方いましたらご指摘ください!
エラー内容:Segmentation Fault(core dumped)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int Fugo(int);
void Flooding(int *,int *,int *,int *);
typedef struct{
int id;
int dX;
int dY;
}NodeStates;
NodeStates Node1[50];
NodeStates Node2[50];
int main(void)
{
int SX1,SY1;
int RX1,RY1;
int SX2,SY2;
int RX2,RY2;
int i=1;
int j=1;
FILE *fp;
fp=fopen("test.csv","w");
if(fp!=NULL){
printf("S1 Node PointX>>");
scanf("%d",&SX1);
printf("S1 Node PointY>>");
scanf("%d",&RX1);
printf("R1 Node PointY>>");
scanf("%d",&RY1);
Node1[0].id = 1;
Node1[0].dX = SX1;
Node1[0].dY = SY1;
printf("S2 Node PointX>>");
scanf("%d",&SX2);
printf("S2 Node PointY>>");
scanf("%d",&SY2);
printf("R2 Node PointX>>");
scanf("%d",&RX2);
printf("R2 Node PointY>>");
scanf("%d",&RY2);
Node2[0].id=1;
Node2[0].dX=SX2;
Node2[0].dY=SY2;
srand((unsigned int)time(NULL));
fprintf(fp,"First\n");
fprintf(fp,"NodeID,X,Y\n");
fprintf(fp,"%d,%d,%d\n",Node1[0].id, SX1, SY1);
while(!(SX1==RX1 && SY1==RY1)){
Flooding(&SX1, &SY1, &RX1, &RY1);
Node1[i].dX=SX1;
Node1[i].dY=SY1;
Node1[i].id=i+1;
fprintf(fp,"%d,%d,%d\n",Node1[i].id,Node1[i].dX,Node1[i].dY);
i++;
}
fprintf(fp,"Second\n");
fprintf(fp,"NodeID,X,Y\n");
fprintf(fp,"%d,%d,%d\n",Node2[0].id, SX2, SY2);
while(!(SX2==RX2 && SY2==RY2)){
Flooding(&SX2,&SY2,&RX2,&RY2);
Node2[j].dX=SX2;
Node2[j].dY=SY2;
Node2[j].id=j+1;
fprintf(fp,"%d,%d,%d\n",Node2[j].id,SX2,SY2);
j++;
}
}
fclose(fp);
return 0;
}
void Flooding(int *a,int *b,int *c,int *d){
int *e,*f,r;
*a=*a-*c;
*b=*b-*d;
*e=Fugo(*a);
*f=Fugo(*b);
*a=abs(*a);
*b=abs(*b);
r=rand()%3;
if(*a!=0&&*b!=0){
if(r==0){
*a=*a-1;
}
else if(r==1){
*a=*a-1;
*b=*b-1;
}
else *b=*b-1;
}
else if(*a==0)*b=*a-1;
else if(*b==0)*a=*b-1;
*a=*a**e+*c;
*b=*b**f+*d;
}
int Fugo(int a){
int n;
if(a>=0){
n=1;
}
else{
n=-1;
}
return n;
}
お礼
ファイル内での位置の、説明ありがとうございます。