圆的面积使用笛卡尔平面的点

时间:2017-05-07 12:44:18

标签: c++ c struct

我有以下代码,其中包含距离'在此函数中使用未初始化。

这是一个代码,它接受来自笛卡尔平面的两个坐标,并使用它们之间的距离作为半径来查找圆的面积。这是代码

#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;
}

3 个答案:

答案 0 :(得分:3)

这是正确的:distance内的变量getDistancedistance内的变量main是两个不同的变量。

当你写这个

printf("Distance between a and b: %lf\n", getDistance(a, b));
<{1}}内的{p> distance未设置。

您可以通过添加作业来修复它

main

实施说明:由于您需要距离平方,因此您可以通过定义函数distance = getDistance(a, b); printf("Distance between a and b: %lf\n", distance); 并使用它来避免取平方根。

答案 1 :(得分:1)

您应该仔细阅读编译器警告,因为它引用了distance函数中的变量main而不是getDistance中的变量。

我想,你真正想做的是:

distance = getDistance(a, b);
printf("Distance between a and b: %lf\n", distance);

然后,您可以在getDistance函数中的任何位置使用main的结果。 ;)

答案 2 :(得分:0)

您忘记分配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;
}