C# 如何编写一个代码,读取一对坐标并检查给定点是否在圆内和矩形外?
我是新来的。我努力学习C#的基础知识,这是我的第一语言。我在互联网上发现了一个让我发疯的任务。我认为,给我带来麻烦的主要是数学部分。我希望任何人都能帮助我。任务如下: 编写一个程序,读取一对坐标x和y,并使用表达式检查给定点(x,y)是否在圆K({1,1},1.5)内和矩形R外(顶部=1,左侧=1,宽度=6,高度=2) 输入 您将在输入的两行上收到一对坐标,第一行是x,第二行是y 输出 如果点在圆内,则打印圆内;如果点在圆外,则打印圆外。然后,如果点位于矩形内,则打印一个空格,后跟内矩形,否则打印外矩形。有关视觉描述,请参见示例测试。 约束条件 坐标x和y始终是[-10001000]范围内的有效浮点数 到目前为止,我已经做到了:C# 如何编写一个代码,读取一对坐标并检查给定点是否在圆内和矩形外?,c#,C#,我是新来的。我努力学习C#的基础知识,这是我的第一语言。我在互联网上发现了一个让我发疯的任务。我认为,给我带来麻烦的主要是数学部分。我希望任何人都能帮助我。任务如下: 编写一个程序,读取一对坐标x和y,并使用表达式检查给定点(x,y)是否在圆K({1,1},1.5)内和矩形R外(顶部=1,左侧=1,宽度=6,高度=2) 输入 您将在输入的两行上收到一对坐标,第一行是x,第二行是y 输出 如果点在圆内,则打印圆内;如果点在圆外,则打印圆外。然后,如果点位于矩形内,则打印一个空格,后跟内矩形,否则打
static void Main()
{
double x = double.Parse(Console.ReadLine());
double y = double.Parse(Console.ReadLine());
double centerx = 1;
double centery = 1;
double r = 1.5;
double widthR = 6;
double HighR = 2;
double topY = 0 + (HighR / 2);
double rightX = 0 + (widthR / 2);
double bottomY = 0 - (HighR / 2);
double leftX = 0 - (widthR / 2);
double rectanglePointX = x - (-1);
double rectanglePointY = y - 1;
bool IsInsideC = (x - centerx) * (x - centerx) + (y - centery) * (y - centery) <= r * r;
bool IsInsideR = ((rectanglePointY< topY) && (rectanglePointY > bottomY) && (rectanglePointX < rightX) && (rectanglePointX > leftX));
if (IsInsideC ==false && IsInsideR== false)
{
Console.WriteLine("outside circle outside rectangle");
}
else if (IsInsideC == true && IsInsideR == true)
{
Console.WriteLine("inside circle inside rectangle");
}
else if (IsInsideC == false && IsInsideR == true)
{
Console.WriteLine("otside circle inside rectangle");
}
else
{
Console.WriteLine("inside circle outside rectangle");
}
}
static void Main()
{
double x=double.Parse(Console.ReadLine());
double y=double.Parse(Console.ReadLine());
双中心x=1;
双中心=1;
双r=1.5;
双宽度r=6;
双高r=2;
双topY=0+(高R/2);
双右X=0+(宽度r/2);
双底=0-(高/2);
双左X=0-(宽度r/2);
双矩形点x=x-(-1);
双矩形点y=y-1;
bool-IsInsideC=(x-centerx)*(x-centerx)+(y-centery)*(y-centery)bottomY)和&(矩形点x<右x)和&(矩形点x>左x));
if(IsInsideC==false&&IsInsideR==false)
{
控制台.WriteLine(“外圆外矩形”);
}
else if(IsInsideC==true&&IsInsideR==true)
{
Console.WriteLine(“内圆内矩形”);
}
else if(IsInsideC==false&&IsInsideR==true)
{
控制台。写线(“矩形内的otside圆”);
}
其他的
{
控制台.WriteLine(“内圆外矩形”);
}
}
谢谢,这是事先准备好的 首先,您必须了解这不是一个特定于编程的问题。 要创建程序,请执行以下步骤:
- 在纸上手工写下解决数学问题的每一步
- 检查重复的步骤,并将它们放在一起
- 编写一个简单的伪代码(用英语简单表示程序)
- 在任何编程语言中转换伪代码
private static bool IsWithinRectangle(double x, double y,
double left, double top, double width, double height) {
// y should be below the top - y <= top and above the bottom: y >= top - height
return (x >= left) && (x <= left + width) &&
(y <= top) && (y >= top - height);
}
private static bool IsWithinCircle(double x, double y,
double centerX, double centerY, double r) {
return (x - centerX) * (x - centerX) + (y - centerY) * (y - centerY) <= r * r;
}
测试:
// Circle:
double centerx = 1;
double centery = 1;
double r = 1.5;
// Rectangle:
double left = -1;
double top = 1;
double width = 6;
double height = 2;
// Point to test:
double x = 2.5;
double y = 2.0;
string rectTest = IsWithinRectangle(x, y, left, top, width, height)
? "within rect"
: "outside rect";
string circleTest = IsWithinCircle(x, y, centerx, centery, r)
? "within circle"
: "outside circle";
Console.Write(string.Join(" & ", circleTest, rectTest));
结果:
outside circle & outside rect
我想这就是你需要的- 如果这不起作用,这里还有一个-
下面是如何检查矩形-代码有什么问题?您还没有告诉我们问题出在哪里!它很好地定义了坐标是否在圆内,但在矩形内会产生一些错误。我也有同样的问题。@Julian Docev:请提供一个反例(“…它在矩形中出现了一些错误…”);我建议一个点(
x,y
)在矩形内,当且仅当x
在[left..left+with]
范围内,并且y
在任务中[top..top+height]
范围内,这是检查结果的左侧。圆形是可以的,但矩形并不总是可以的;x=2.5Y=2——矩形外的外圆;x=0 y=1——矩形内圆;x=2.5Y=1——矩形内的内圆;x=1 y=2-内圆外矩形。@朱利安·多切夫:我明白了,我们必须从顶部:(y=顶部-高度)
:y应该在顶部以下。你能更好地解释一下整个等式吗,因为我不确定我是否理解;)是的,数学不是我的强项,这就是我寻求帮助的原因:)
outside circle & outside rect