簡體   English   中英

給出實數 x 和 y。 我們需要判斷坐標為(x;y)的點是否屬於陰影區域

[英]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)的點是否屬於陰影區域。(僅使用C編程語言)。

在此處輸入圖像描述

我是 C 編程的初學者。 我不知道如何解決這個問題。 但是很想學這個。 請給我解釋一下。

好吧,讓我們看看我的數學是否沒有讓我無法定義這樣的事情,方程式將是這樣的:

  • 1<Y<3, -5<=X<=5
  • Y<3/4X+1, 0<=X<=4
  • Y<4/3X+1, -4<=X<=0
  • Y<3X+1, -5<=X<=-4
  • Y<1/3X+1, 4<=X<=5

這是一堆方程,基本上用這個來設置區域,如果和 else(),我們可以使用一些數學運算,如果你像一年前那樣問我,我仍然會記住分析class 不幸的是,那早已不復存在,但我的袖子里還有最后一張牌,那就是 wolfram alpha 我提出了它粘貼以下的方程(除了 1<Y<3 因為這導致了一個小錯誤)

(Y<3/4X+1, 0<=X<=4) and (Y<4/3X+1, -4<=X<=0) and (Y<3X+1, -5<=X< =-4) 和 (Y<1/3X+1, 4<=X<=5)

不幸的是,它輸出了相同的結果,因此將 go 放入代碼中,現在我們只需要創建一個 function 我明天將嘗試找到更好的“公式壓縮”另外,由於您是新手,我將不得不解釋一些事情 || 是合乎邏輯的或而 && 是合乎邏輯的,這與數學有關,我選擇了 double 而不是 float,因為問題主要是數學問題,所以我選擇了一些精度,盡管輸入是 int,因為我很懶,我已經回答了如何保護 scanf 免受錯誤輸入請求的影響。Is there a way to limit scanf in C? 因此,如果您需要將此代碼進行完善,並且在 C 中閱讀上面的用戶校樣,則 true 是任何不為零的數字,這意味着 while(1) 或 while(133) 會進行無限循環,因為它們將始終為真 %d 在 scanf 中格式修飾符基本上告訴 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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM