【问题标题】:Real numbers x and y are given. We need to determine whether or not a point with coordinates (x; y) belong to the shaded area给出实数 x 和 y。我们需要判断坐标为(x;y)的点是否属于阴影区域
【发布时间】:2021-03-14 10:29:43
【问题描述】:

给出实数 x 和 y。我们需要判断坐标为(x;y)的点是否属于阴影区域。(仅使用C编程语言)。

我是 C 编程的初学者。我不知道如何解决这个问题。但是很想学这个。请给我解释一下。

【问题讨论】:

  • 嗨 Hafiz,c 中并没有真正的函数来执行此操作。由于这个问题似乎更多的是关于算法,我建议你添加algorithm 标签。如果您知道要使用什么算法,并且只需要语言方面的帮助,请指定您要使用的算法。
  • 这是一道数学题,而不是编程题。在这里试试:math.stackexchange.com/questions/tagged/geometry
  • 请注意,该图是对称的,因此您可以通过采用fabs(x) 并仅考虑图的右侧来简化问题。所以问题归结为寻找一个点是否在三角形的区域内。
  • 假设您标记三个三角形顶点 A、B、C 和点 P。如果三个三角形 ABP、BCP、CAP 的面积之和 > 面积 ABC,则该点位于 ABC 之外。
  • 是的。这可能是决定性的。我会尝试的。 @WeatherVane

标签: c algorithm math graph equation


【解决方案1】:

让我们看看我的数学是否不及格 要定义这样的事情,方程式将是这样的:

  • 1
  • Y
  • Y
  • Y
  • Y

这是一堆方程,基本上用它来设置区域,如果和 else(),我们可以使用一些数学,如果你像一年前那样问我,我仍然会在不幸的是,分析课程早已不复存在,但我的袖子里还有最后一张卡片,那就是 wolfram alpha,我提出了它粘贴以下的方程式(除了 1

(Y

不幸的是,它的输出相同,所以现在我们只需要创建一个函数,我明天会尝试找到更好的“公式压缩” 另外,由于您是新人,我将不得不解释一些事情||是合乎逻辑的或而 && 是合乎逻辑的,这与数学有关,我选择了 double 而不是 float,因为问题主要是数学问题,所以我选择了一些精度,尽管输入是 int,因为我很懒,我已经回答了如何保护 scanf 免受Is there a way of limiting scanf in C? 的错误输入请求 因此,如果您需要完善此代码并在上面阅读用户证明 在 C 中,true 是任何不为零的数字,这意味着 while(1) 或 while(133) 会产生无限循环,因为它们始终为真 scanf 中的 %d 是格式修饰符,基本上告诉 C“我在等待一个整数”

int IsItInside(double x, double y){
    if (y>3 || y<1 ){// i dont need to "range" this since the its always like this
        return 0; 
    }
    
    if (y<(((3*x)/4)+1)&& x>=0 && x<=4){
        return 1; 
    }
    if (y<((4/(3*x))+1) && x>=-4 && x<=0){
        return 1; 
    }
    if (y<((3*x)+1) && x>=-5 && x<=-4){
        return 1;
    }
    if (y<((1/3*x)+1) && x>=4 &&  x<=5){
        return 1;
    }
    return 0;
}
int main(int argc, char const *argv[]){
    int x=0, y=0;
    
    printf("Enter x: ");
    scanf ("%d", &x); 
    
    printf("Enter y: ");
    scanf ("%d", &y);
    if(IsItInside(x,y)){
        printf("It is inside");
    }else{
        printf("It is outside");
    }
    
    return 0;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多