圆的面积 使用笛卡尔平面上的点
Posted
技术标签:
【中文标题】圆的面积 使用笛卡尔平面上的点【英文标题】:Area of a circle Using points from a cartesian plane 【发布时间】:2017-05-07 12:44:17 【问题描述】:我有以下代码,说明在此函数中未初始化使用“距离”。
这是一个代码,它接受来自笛卡尔平面的两个坐标,并使用它们之间的距离作为半径来找到圆的面积。这是代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct Point
int x, y;
;
double getDistance(struct Point a, struct Point b)
double distance;
distance = sqrt((a.x - b.x) * (a.x - b.x) + (a.y-b.y) *(a.y-b.y));
return distance;
int main()
float Area;
double distance;
struct Point a, b;
printf("Enter coordinate of point a: ");
scanf("%d %d", &a.x, &a.y);
printf("Enter coordinate of point b: ");
scanf("%d %d", &b.x, &b.y);
printf("Distance between a and b: %lf\n", getDistance(a, b));
Area= 3.14 * distance * distance;
printf("\nArea of Circle : %f", Area);
return 0;
【问题讨论】:
这应该是 C 还是 C++?实际的错误信息是什么,包括文件名和行号?getDistance()
中的变量distance
在不同的范围内,因此与main()
中的变量distance
完全无关。
当然可以。查看main
函数。您声明了一个名为distance
的变量,但从不初始化它。然后,你做Area= 3.14 * distance * distance;
Oops。
【参考方案1】:
这是正确的:getDistance
中的变量distance
和main
中的变量distance
是两个不同的变量。
当你写这篇文章时
printf("Distance between a and b: %lf\n", getDistance(a, b));
distance
内部 main
未设置。
您可以通过添加作业来修复它
distance = getDistance(a, b);
printf("Distance between a and b: %lf\n", distance);
实现说明:由于您需要距离平方,您可以通过定义函数getDistanceSquared
并使用它来避免取平方根。
【讨论】:
【参考方案2】:您应该更仔细地阅读编译器警告,因为它在您的main
函数中引用变量distance
而不是getDistance
中的变量。
我想,你真正想做的是:
distance = getDistance(a, b);
printf("Distance between a and b: %lf\n", distance);
然后,您可以在 main
函数的任何位置使用 getDistance
的结果。 ;)
【讨论】:
【参考方案3】:您忘记分配 distance
变量,尝试类似:
int main()
float Area;
double distance;
struct Point a, b;
printf("Enter coordinate of point a: ");
scanf("%d %d", &a.x, &a.y);
printf("Enter coordinate of point b: ");
scanf("%d %d", &b.x, &b.y);
distance = getDistance(a, b);
printf("Distance between a and b: %lf\n", distance);
Area= 3.14 * distance * distance;
printf("\nArea of Circle : %f", Area);
return 0;
【讨论】:
以上是关于圆的面积 使用笛卡尔平面上的点的主要内容,如果未能解决你的问题,请参考以下文章