2017-02-20 20 views
-7

円(0,0)と半径r(整数> 0)を持つ円を考えると、円周上の点の数(x、y)はxとyの両方が整数であることがわかります。 x^2 + y^2 = r^2のとき、点(x、y)は円周上にあるとみなされます。整数点を持つ点

入力:円の半径である一行。

私は、このために正しい答えを得ることができません。 radiusが5であれば、例えば、その円周上の12ポイントがあるはずですが、私はちょうど4

私が書いたコードはゲット:中央の円を考えると

static int findNumOfIntegerPoints(int radius) 
{ 
    static int count =0; 
    for (int x=0; x<=radius; x++) 
    { 
     for (int y=0; y <=radius; y++) 
     { 
      if ((x^2)+(y^2) == (radius^2)) 
      { 
       count++; 
      } 
      continue; 
     } 

    return count; 
} 
+1

だから、質問は何ですか? –

+1

少なくとも努力してみてください。 –

+1

負の整数を数えていますか?中心が0,0の場合、その円周上の点の少なくともいくつかは負の値になります。 –

答えて

1

を(0,0)と半径r(整数> 0)、xとyが両方 整数であるように円周上の点(x、y)の 数を見つけます。 x^2 + y^2 = r^2のとき、点(x、y)は円周上にあるとみなされます。

あなたの見落とした負の座標を考慮して機能を変更しました。私はまた、Java ^オペレータはあなたが望むものではありませんよう、代わりにMath.pow(x,2)を呼び出すために、あなたのx^2y^2を修正しました。

class Circle { 
    static int findNumOfIntegerPoints(int radius) 
    { 
     int count =0; 
     for (int x=-radius; x<=radius; x++) 
     { 
      for (int y=-radius; y <=radius; y++) 
      { 
       if (Math.pow(x,2)+Math.pow(y,2) == Math.pow(radius,2)) 
       { 
        count++; 
       } 
      } 

     } 
     return count; 
    } 

    public static void main(String args[]) { 
     System.out.println(findNumOfIntegerPoints(5)); 
    } 
} 
-1
import java.util.*; 

public class coordinates { 


public static void main(String[] args) { 

    int radius=0; 
    Scanner obj=new Scanner(System.in); 
    radius=obj.nextInt(); 
    int points=0; 
    for(int x=-radius;x<=radius;x++) 
    { 
     for(int y=-radius;y<=radius;y++) 
    { 
    double dist=Math.sqrt(x*x + y*y); 

    if(dist==radius) 
    { 
    points++; 
    } 
    } 
    } 
    System.out.println("Total no of integer co-ordinates : "+points); 
    obj.close(); 
} 
} 
+0

「[回答]」をお読みください。スタックオーバーフローでは、コードのみの回答は、新しいコードが動作している間に古いコードが動作しない理由を説明していないため、一般的には役に立たないと考えられています(_does_ work ...と仮定して)。 –

関連する問題