ページ 1 / 1
まだ課題です
Posted: 2007年6月11日(月) 22:55
by 徹夜
int main()
{
int i,j,ln;
printf("何段ですか:");
scanf("%d",&ln);
for(i=1;i<=ln;i++){
for(j=1;j<=ln-i;j++){
putchar(' ');
}
for(j=1;j<=2*i-1;j++){
putchar('*');
}
printf("\n");
}
return(0);
}
ピラミッドを*で表示プログラムになっていると思います。しかし課題にはもう1題あって半径rをキーボードから入力してもらい、半径rの円をアスタリスクで表示せよという問題が出されています。試行錯誤しながら問題を解いていたのですがどうしても解法が見つからないので、再びここでお願いすることにしました。
Re:まだ課題です
Posted: 2007年6月12日(火) 01:30
by 管理人
#include <stdio.h>
#define X 16
#define Y 16
void main(){
/*ループ用のカウンタを2つ宣言*/
for(/*-XからXまでループさせる*/){
for(/*-YからYまでループさせる*/){
if(/*円の条件式にマッチするなら*/)
printf("■");
else
printf(" ");
}
printf("\n");
}
return ;
}
穴埋めすれば答えになるサンプルを書いてみました。
円の条件式はいいですか?
例えば中心が原点で半径3の円の内側である条件式はどう書きますか?
現在半径が16まで対応できるようにdefineで定義してありますから、16までで半径を決めて、
最初はscanfなしに、手書きで条件式書いてみてください。
注釈してある部分を式に変更すると完成します。
Re:まだ課題です
Posted: 2007年6月13日(水) 13:31
by 徹夜
defineが分かりません。
あとループ構文を-X~Xまで作るときはもう一個変数を立てて作るのですか?変数iをたてて
for(i=-x;i<=x;i++)とかですか?
円の条件式はx*x+y*y<=r*rだと思いますが、それの使い方が分からないです。
Re:まだ課題です
Posted: 2007年6月13日(水) 13:58
by asd
> defineが分かりません。
調べてみませんか?
Google検索 c言語 define
http://www.google.co.jp/search?hl=ja&q= ... C%E7%B4%A2
> あとループ構文を-X~Xまで作るときはもう一個変数を立てて作るのですか?変数iをたてて
> for(i=-x;i<=x;i++)とかですか?
コメント中にループ用変数を2つ宣言とあります。
> 円の条件式はx*x+y*y<=r*rだと思いますが、それの使い方が分からないです。
ループ用変数がそれぞれX座標、Y座標にあたるのでそれに置き換えて条件式を書けばよいと思います。
また、半径は固定で考えてよいと思うので(後にscanfを使うと思います)rは適当な半径に置き換えましょう。
例)
X座標のループ変数がi、Y座標のループ変数がj、半径5のときの条件式
i*i+j*j<=5*5
目の前にコンパイルできる環境があるのであればまずはやってみませんか?
やってみてダメだったらどの様に書いてどううまくいかないのか説明してもらわないと
なかなか上達しませんよ~^^
Re:まだ課題です
Posted: 2007年6月13日(水) 16:40
by 管理人
defineについてはasdさんが示していらっしゃる方法で調べてみてください。
解らないことがあればまずgoogleです。
もうほとんどasdさんが示していらっしゃるので、私が言うことはありませんが、
私のサンプルは半径が指定できないので、とりあえず円を描くプログラムを完成させてからscanfなどで半径を取り込みましょう。
最初は半径は固定でいきましょう。
>> for(i=-x;i<=x;i++)とかですか?
おしいですが、今回xは何を用いるかと言うと・・。
defineについて調べると解ります。
とりあえず色々自分で書いてみて何度も実行していく中で答えを見つけていきましょう。
自分でやってみずに「こうですか?」「こうですか?」と聞くのはよくないので。
やってみて出来なかったらまた聞いてください。