このプログラムの修正箇所を教えていただけないでしょうか?
xとyをそれぞれ0から10まで1きざみで変え、そのすべてを組み合わせた平面上の11x11個の点(x,y)を考え、これらの点のうちで、原点が(6,6)、半径5の円の内側(円周上は除く)に含まれる点の数を出力するプログラム。
とりあえず、原点が(6,6),半径5の円の内側なので,原点(6,6)と点(x,y)との距離の2乗が5*5より小さいと考えました。
そこで私が考えたプログムなんですが、結果と照らし合わせたところ上手く計算が合いませんでした…。
#include <stdio.h>
int main(void)
{
int x,y,h1=0,i1=0,j1=0,k1=0,l1=0,m1=0,n1=0,o1=0,p1=0,q1=0,r1=0,t=0;
/*y=0の行について考える*/
for(x=0,y=0;x<=10;x++){
if((6-x)*(6-x) + (6-y)*(6-y)<=5*5)
h1+=1;
}
/*y=1の行について考える*/
for(x=0,y=1;x<=10;x++){
if((6-x)*(6-x) + (6-y)*(6-y)<=5*5)
i1+=1;
}
:(中略yを1ずつ増やして同じことの繰り返し)
:
:
/*y=10の行について考える*/
for(x=0,y=10;x<=10;x++){
if((6-x)*(6-x) + (6-y)*(6-y)<=5*5)
r1+=1;
}
t=h1+i1+j1+k1+l1+m1+n1+o1+p1+q1+r1;
printf("%d",t);
return(0);
}
自分自身、初心者でかなりまどろっこしい書き方をしていると思います;
ここで完全に自分では詰まってしまったので、計算が合うような修正箇所、簡潔な書き方、ヒント等をどなたかご教授いただけると幸いです。
よろしくお願いします。