「原点を中心とする円の第1象限を考える。半径nを入力して自然数である座標とその個数、各座標におけるx^2+y^2の値を求め、その値を大きい順に並び替えて、x^2+y^2の値とそれに対応する座標と個数を表示するプログラムを作成せよ」
という問題を質問したむすめふさほせです。
しかし1次元配列を用いていないため不正解となってしまいました。
そこで、次のプログラムをどう改良して1次元配列を用いればよいか教えていただきたいのです。
ご回答よろしくお願いいたします。
#include<stdio.h>
int main(void)
{
int x;
int y;
int count=0;
int n;
int i;
int j;
int z[9999]={0};
int dumy;
printf("円の半径nを入力してください:");
scanf("%d",&n);
for( x = 1; x < n; x++)
{
for( y = 1; y < n; y++)
{
if(x*x+y*y<n*n)
{
printf("(%d,%d)",x,y);
z[count]=x*x+y*y;
count++;
}
}
}
for( i = 0; i < count; i++)
{
for( j = i + 1; j < count; j++)
{
if( z[i] > z[j])
{
dumy = z[i];
z[i] = z[j];
z[j] = dumy;
}
}
}
for(i = 0; i < count; i++)
{
printf("\nx^2+y^2=%dです",z[i]);
}
printf("\n座標の個数は%dです",count);
return(0);
}