まだ課題です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
徹夜

まだ課題です

#1

投稿記事 by 徹夜 » 18年前

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:まだ課題です

#2

投稿記事 by 管理人 » 18年前

#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:まだ課題です

#3

投稿記事 by 徹夜 » 18年前

defineが分かりません。
あとループ構文を-X~Xまで作るときはもう一個変数を立てて作るのですか?変数iをたてて
for(i=-x;i<=x;i++)とかですか?
円の条件式はx*x+y*y<=r*rだと思いますが、それの使い方が分からないです。



 

asd

Re:まだ課題です

#4

投稿記事 by asd » 18年前

> 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:まだ課題です

#5

投稿記事 by 管理人 » 18年前

defineについてはasdさんが示していらっしゃる方法で調べてみてください。
解らないことがあればまずgoogleです。
もうほとんどasdさんが示していらっしゃるので、私が言うことはありませんが、
私のサンプルは半径が指定できないので、とりあえず円を描くプログラムを完成させてからscanfなどで半径を取り込みましょう。
最初は半径は固定でいきましょう。

>> for(i=-x;i<=x;i++)とかですか?

おしいですが、今回xは何を用いるかと言うと・・。
defineについて調べると解ります。

とりあえず色々自分で書いてみて何度も実行していく中で答えを見つけていきましょう。
自分でやってみずに「こうですか?」「こうですか?」と聞くのはよくないので。
やってみて出来なかったらまた聞いてください。

閉鎖

“C言語何でも質問掲示板” へ戻る