首先,我给出了一个仅使用结构来实现这一点的任务。
我需要检查一个点是否在圆内/圆外。
输入:点的坐标、圆心、半径。
输出:圆内/外的点。
好吧,我需要使用距离公式d = sqrt( (x_1-x_2)^2 + (y_1 - y_2)^2 )
然后检查它是否更大/更小/等于到半径。
我知道逻辑,但我不知道结构的语法。你们能帮我吗?
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct {
float x;
float y;
}Point;
typedef struct {
Point center;
float radius;
}Circle;
int main()
{
Point Coordinates;
Coordinates.x = 0; //Is this initialization necessary?
Coordinates.y = 0; //Is this initialization necessary?
Circle insideCircle;
float distance;
printf("Please enter the coordinates of your point: ");
scanf("%f %f", Coordinates.x, Coordinates.y); //after input, throws error.
printf("Please enter your center coordinate and your radius: ");
scanf("%f %f", insideCircle.radius, insideCircle.center.x, insideCircle.center.y);
printf("%f %f %f %f %f", Coordinates.x, Coordinates.y, insideCircle.radius, insideCircle.center.x, insideCircle.center.y);
//More code for checking if distance > or < or = to radius to be added.
getch();
}
最佳答案
对于scanf()
,您需要将变量的地址作为参数传递给提供的转换说明符,例如
scanf("%f %f", &(Coordinates.x), &(Coordinates.y));
^ ^
以及其他用途。
也就是说,检查 scanf()
调用的返回值以确保成功至关重要。
关于检查点是在圆内还是在圆外(仅使用结构体实现),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36034973/