C# 如何编写一个代码,读取一对坐标并检查给定点是否在圆内和矩形外?

C# 如何编写一个代码,读取一对坐标并检查给定点是否在圆内和矩形外?,c#,C#,我是新来的。我努力学习C#的基础知识,这是我的第一语言。我在互联网上发现了一个让我发疯的任务。我认为,给我带来麻烦的主要是数学部分。我希望任何人都能帮助我。任务如下: 编写一个程序,读取一对坐标x和y,并使用表达式检查给定点(x,y)是否在圆K({1,1},1.5)内和矩形R外(顶部=1,左侧=1,宽度=6,高度=2) 输入 您将在输入的两行上收到一对坐标,第一行是x,第二行是y 输出 如果点在圆内,则打印圆内;如果点在圆外,则打印圆外。然后,如果点位于矩形内,则打印一个空格,后跟内矩形,否则打

我是新来的。我努力学习C#的基础知识,这是我的第一语言。我在互联网上发现了一个让我发疯的任务。我认为,给我带来麻烦的主要是数学部分。我希望任何人都能帮助我。任务如下:

编写一个程序,读取一对坐标x和y,并使用表达式检查给定点(x,y)是否在圆K({1,1},1.5)内和矩形R外(顶部=1,左侧=1,宽度=6,高度=2)

输入

您将在输入的两行上收到一对坐标,第一行是x,第二行是y

输出

如果点在圆内,则打印圆内;如果点在圆外,则打印圆外。然后,如果点位于矩形内,则打印一个空格,后跟内矩形,否则打印外矩形。有关视觉描述,请参见示例测试。 约束条件

坐标x和y始终是[-10001000]范围内的有效浮点数

到目前为止,我已经做到了:

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