【发布时间】:2020-03-18 12:17:18
【问题描述】:
这是我的程序:
int main(){
struct Koordinaten {
float x;
float y;
}Vektor[3];
typedef struct Koordinaten Koordinaten;
float A[3], s, b;
for(int i = 0; i < 3; i++){
char d;
if(i == 0)
d = 'A';
if(i == 1)
d = 'B';
if(i == 2)
d = 'C';
printf("Please enter the coordinates of the %c vector:\nx: ", d);
scanf("%f", &Vektor[i].x);
printf("\ny: ");
scanf("%f", &Vektor[i].y);
printf("Values of the %c vector x: %f y: %f\n\n", d, Vektor[i].x, Vektor[i].y);
A[i] = sqrt(Vektor[i].x * Vektor[i].x + Vektor[i].y * Vektor[i].y);
printf("The length of the vector %c is: %f\n\n", d, A[i]);
}
s = 1/2 * (A[0] + A[1] + A[2]);
printf("s = %f\n", s);
b = sqrt(s * (s - A[0]) * (s - A[1]) * (s-A[2]));
printf("The area is: %f", b);
}
如您所见,我想取三个向量并给出向量的面积。它完美地工作,因为与 s 变量的行。我的程序只给我 s 的值 0,但它必须是 7.5!
【问题讨论】:
-
请输入,预期输出和实际输出。
-
将
s = 1/2 * (A[0] + A[1] + A[2]);更改为s = 1/(2 * (A[0] + A[1] + A[2])); -
char d; if(i == 0) d = 'A'; if(i == 1) d = 'B'; if(i == 2) d = 'C';->char d = 'A' + i; -
非常感谢大家我发现了错误。
-
作为关于命名的一般评论,我建议与大写之类的东西保持一致,例如,您的
Vektor是一个数组,但样式与Koordinaten相同,这是一个类型。此外,大多数单字符名称(s、b)可以变得更长、更具描述性,尤其是s乍一看可能暗示它是“某个字符串”。