#include<stdio.h>
#define N 2
void read_vector3D(double vector[N]);
void outer_product3D(const double vector1[N], const double vector2[N], double vector3[N]);
int main(void)
{
double vector1[N],vector2[N],vector3[N];
read_vector3D(vector1);
read_vector3D(vector2);
outer_product3D(vector1, vector2, vector3);
printf("ベクトルa %.2f, %.2f, %.2f\n", vector1[0], vector1[1], vector1[2]);
printf("ベクトルb %.2f, %.2f, %.2f\n", vector2[0], vector2[1], vector2[2]);
printf("2つのベクトルに垂直なベクトルc(外積)は(%.2f, %.2f, %.2f)です\n", vector3[0], vector3[1], vector3[2]);
return 0;
}
void read_vector3D(double vector[N])
{
int i;
static int x = 0;
if(x == 0){
printf("ベクトルaの3成分を入力してください\n");
for(i = 0; i <= N; i++){
scanf("%lf", &vector[i]);
x += 1;
}
}
else{
printf("ベクトルbの3成分を入力してください\n");
for(i = 0; i <= N; i++){
scanf("%lf", &vector[i]);
}
}
}
void outer_product3D(const double vector1[N], const double vector2[N], double vector3[N])
{
vector3[0] = vector1[1] * vector2[2] - vector1[2] * vector2[1];
vector3[1] = vector1[2] * vector2[0] - vector1[0] * vector2[2];
vector3[2] = vector1[0] * vector2[1] - vector1[1] * vector2[0];
}
ベクトルaの3成分を入力してください
1.0
2.0
‐1.0
ベクトルbの3成分を入力してください
-1.0
1.0
2.0
と入力し、実行したのですが実行結果が
ベクトルa 2.00, 2.00, -1.00
ベクトルb 4.00, 1.00, 2.00
2つのベクトルに垂直なベクトルc(外積)は(5.00, -3.00, 4.00)です
この様に入力したベクトルa,b共に最初に入力した値が変わってしまうんです。原因がさっぱりわかりません。この原因は何なのでしょうか?