簡體   English   中英

計算圓上的整點

[英]Calculate whole points on a circle

我寫了一個小程序,但它給出的答案總是錯的,這是代碼

double radiusc;
double xcenter;
double ycenter;

bool onthecircle(int x,int y);


int main(void)
{
    int inputwait;

    printf("Please enter x coordinate of your center point: ");
    scanf("%d",&xcenter);

    printf("Please enter y coordinate of your center point: ");
    scanf("%d",&ycenter);

    printf("Please enter the radius of the circle: ");
    scanf("%d",&radiusc);

    double left_x = xcenter - radiusc;
    double left_y = ycenter;

    double down_x = xcenter;
    double down_y = ycenter - radiusc;

    if(left_x >= floor(left_x))
    {
        left_x = floor(left_x);
        int (left_x);
    }
    else
    {
        left_x = floor(left_x) + 1;
        int (left_x);
    }

    for(left_x; left_x<=xcenter; left_x++)
    {
        for(left_y;left_y>ycenter-radiusc;left_y--)
        {
            if(onthecircle(left_x,left_y))
                printf("Jest na kole: %d , %d \n", left_x,left_y);
        }
    }

    scanf("%i",&inputwait);

    return 0;
}

bool onthecircle(int x,int y)
{
    double t1= x - xcenter;
    double t2 = x - ycenter;

    if ((t1*t1 + t2*t2) > (0,9 *radiusc*radiusc) &&
        (t1*t1 + t2*t2) < (1,1 *radiusc*radiusc))
        return 1;
    else
        return 0;

}

當我調試時,輸入0,0作為我的中心並且r = 1,它給了我0點和一些大數字,而不是保存1作為r的值,它得到一個隨機的大數字,我不知道為什么。 有任何想法嗎?

你的scanf格式錯了; %d用於十進制整數。 你想要%lfdouble

那就是說,你為什么不使用C ++風格的I / O,即<iostream>coutcin等? 這看起來像C和C ++的丑陋混合。

除了Ed發現的問題, 0,9不是有效的浮點常數; 你想要0.9 (區域設置可能會影響輸入和輸出表示;它們不會影響語言語法。)

(0,9 *radiusc*radiusc)中的逗號是逗號運算符,不是小數點; 你將半徑的平方乘以9。

你錯過了#include <stdio.h>#include <math.h> (對於程序頂部的floor() (你的編譯器可能會讓你逃避它,但它不是可選的)。

printf調用中的格式不正確; “double”需要"%f""%g"

更多:

您使用double作為循環控制變量是值得懷疑的。 調用scanf("%i",&inputwait); 沒有提示的情況下終止程序之前等待輸入是用戶惡意的。 無需使用全局變量。 我不知道int (left_x); 應該這樣做; 我認為它被解析為一個聲明(你永遠不會使用的變量),並且括號是多余的。 您使用類型名稱bool意味着您要將代碼編譯為C ++,或者您有#include <stdbool.h>bool的定義,您沒有打擾我們。

這和我現在願意做的調試一樣多。 修復這些錯誤,然后重試。

暫無
暫無

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

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