我的总和面积公式没有计算
My formula for total and area is not calculating
所以在我正在做的项目中,我有一个以原点为中心的圆,我需要通过它切割一条垂直线。我正在尝试计算较小比例的圆的面积;我的输入是半径和左右手比例。现在我只是想确保它正确地进行了我的计算,并且它正确地计算了比率,但它根本没有计算比率面积。请帮忙
int main(){
float radius, left, right, total;
float ratio;
float ratioArea = ratio*pi*pow(radius, 2);
scanf("%d%d%d", &radius, &left, &right);
if(left == right)
{
printf("left and right are equal");
}
// do area calculations with righthand side
else if(left > right)
{
ratio = right / (right+left);
ratioArea = ratio * pi * pow(radius, 2);
printf("ratio= %.6f, area = %f\n", ratio, ratioArea);
}
// do area calculations with lefthand side
else if(left < right)
{
ratio = left / (left + right);
ratioArea = ratio*pi*pow(radius, 2);
printf("ratio = %.6f, area = %f\n", ratio, ratioArea);
}
return 0;
}
第一个问题在这里:
scanf("%d%d%d", &radius, &left, &right);
%d
读取一个整数并取 int *
,而不是 float *
。您需要 %f
才能扫描 float
.
您还需要检查scanf
是否成功:
if (scanf("%f%f%f", &radius, &left, &right) != 3) {
// handle error here
exit(EXIT_FAILURE);
}
scanf
returns 成功扫描的项目数。如果 return 值不是 3,则至少有一个变量未设置。
第二个(主要是无害的)问题:
float radius, left, right, total;
float ratio;
float ratioArea = ratio*pi*pow(radius, 2);
您正在根据 ratio
和 radius
的值初始化 ratioArea
,此时尚未初始化。我很确定这段代码有未定义的行为。
只需删除初始化并改为执行 float ratioArea;
;您已经在下面使用它的每个分支中设置了 ratioArea
。
所以在我正在做的项目中,我有一个以原点为中心的圆,我需要通过它切割一条垂直线。我正在尝试计算较小比例的圆的面积;我的输入是半径和左右手比例。现在我只是想确保它正确地进行了我的计算,并且它正确地计算了比率,但它根本没有计算比率面积。请帮忙
int main(){
float radius, left, right, total;
float ratio;
float ratioArea = ratio*pi*pow(radius, 2);
scanf("%d%d%d", &radius, &left, &right);
if(left == right)
{
printf("left and right are equal");
}
// do area calculations with righthand side
else if(left > right)
{
ratio = right / (right+left);
ratioArea = ratio * pi * pow(radius, 2);
printf("ratio= %.6f, area = %f\n", ratio, ratioArea);
}
// do area calculations with lefthand side
else if(left < right)
{
ratio = left / (left + right);
ratioArea = ratio*pi*pow(radius, 2);
printf("ratio = %.6f, area = %f\n", ratio, ratioArea);
}
return 0;
}
第一个问题在这里:
scanf("%d%d%d", &radius, &left, &right);
%d
读取一个整数并取 int *
,而不是 float *
。您需要 %f
才能扫描 float
.
您还需要检查scanf
是否成功:
if (scanf("%f%f%f", &radius, &left, &right) != 3) {
// handle error here
exit(EXIT_FAILURE);
}
scanf
returns 成功扫描的项目数。如果 return 值不是 3,则至少有一个变量未设置。
第二个(主要是无害的)问题:
float radius, left, right, total;
float ratio;
float ratioArea = ratio*pi*pow(radius, 2);
您正在根据 ratio
和 radius
的值初始化 ratioArea
,此时尚未初始化。我很确定这段代码有未定义的行为。
只需删除初始化并改为执行 float ratioArea;
;您已经在下面使用它的每个分支中设置了 ratioArea
。