![](/img/trans.png)
[英]How to calculate how many points with coordinates (x;y) is in/on/outside of circle
[英]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
用於十進制整數。 你想要%lf
為double
。
那就是說,你為什么不使用C ++風格的I / O,即<iostream>
, cout
, cin
等? 這看起來像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.