構造体を用いたときのprintfがうまくいきません
・醜くなってしまったので、修正予定です。
・c言語です。
・以下のコードを実行したときに、i=2などが実行されずにこまっています。
・学校の課題で、三角形の面積などを求めるプログラミングの課題です。ファイルを読み込んでデータを構造体に入れて、そのデータをもとに計算するものです。
・ファイルは上3行がT1の座標、次の3行がT2の座標、下2行は関係ないです。
・初心者なのでご指摘お願いします。
-----もととなるデータ(ファイル名:triangle.dat)-----
0.0 0.0
1.0 1.0
0.0 -1.0
1.0 1.0
3.0 1.0
0.0 2.0
2.0 1.0
1.0 3.0
-----以下、コード-----
#include
#include
#include
typedef struct{//座標平面の一点を表す構造体
double x;
double y;
} Point;
typedef struct{
Point p[3];//三つの点を表す構造体
} Triangle;
double tri(Triangle dot){//三角形の面積を求める関数
return fabs((dot.p[0].x-dot.p[2].x)(dot.p[1].y-dot.p[2].y)-(dot.p[1].x-dot.p[2].x)(dot.p[0].y-dot.p[2].y))/2.0;
}
int main(void){
FILE *fp_in;
Point p[8];
Triangle dot;
struct Point;
double x,y;
int i,j;
fp_in = fopen("triangle.dat","r");//ファイルの読み込み
if(fp_in == NULL){
fprintf(stderr, "Can't open file\n");
exit(1);
}
for(i=0;i<8;i++){
dot.p[i] = p[i];
}
printf("T1:");//三角形T1
for(i=0;i<3;i++){//ここのiがうまくいかないです。(i=0のみ表示される)
fscanf(fp_in,"%lf %lf",&p[i].x,&p[i].y);//ファイルの読み込み
printf("(%.1f,%.1f) ",p[i].x,p[i].y);//データの表示
if(i=2){
printf("\n");
printf("The area of a triangle T1: %.6lf\n",tri(dot));
}
}
printf("T2:");//三角形T2
for(i=3;i<6;i++){
fscanf(fp_in,"%lf %lf",&p[i].x,&p[i].y);
printf("(%.1f,%.1f) ",p[i].x,p[i].y);
if(i=5){
printf("\n");
printf("The area of a triangle T2: %.6lf\n",tri(dot));
}
}
fclose(fp_in);
return 0;
}
-----実行結果-----
T1:(0.0,0.0)
The area of a triangle T1: 0.000000
T2:(1.0,1.0)
The area of a triangle T2: 0.000000
-----理想の実行結果-----
T1:(0.0, 0.0) (1.0, 1.0) (0.0,-1.0)
The area of a triangle T1: 2.500000
T2:(1.0,1.0) (3.0, 4.0) (2.0, 6.0)
The area of a triangle T2: 5.000000
よろしくおねがいします。