检查点是在圆内还是在圆外(仅使用结构体实现)

标签 c struct scanf

首先,我给出了一个仅使用结构来实现这一点的任务。

我需要检查一个点是否在圆内/圆外。

输入:点的坐标、圆心、半径。

输出:圆内/外的点。

好吧,我需要使用距离公式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/

相关文章:

c - 将值输入到结构化数组中的数组时出现段错误

swift - 在 swift 结构上改变类属性

c - 在 C 中的 vector 函数序列中避免(初学者)分配错误

data-structures - 将函数应用于 Racket 中的树结构

c - sscanf - 不同数量的格式参数?

c - 如何使用 Clang 查找内存泄漏

c - 如何从文本文件中写入和读取(包括空格)

c - 为什么以下(完全有效的)C 代码不显示 Objective-C 中文件的内容?

c - 我需要有关scanf()的帮助

c - fscanf 在循环中保存到同一个数组会导致空间填充数组