無題

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

無題

#1

投稿記事 by taro » 17年前

とても初歩的な質問なのですがvisualC++でfor文をつかって縦、横の大きさを入力すると*によって枠だけの四角形を描くようなプログラムを作りたいのですが、お願いいたします。
(実行例) 4 5
      *****
            
            *   *

            *   *

            *****

box

Re:無題

#2

投稿記事 by box » 17年前

手で書くとしたらどういう手順を踏むかを考えてみてください。

taro

Re:無題

#3

投稿記事 by taro » 17年前

すいません、、、 よくわからないです。 本当に初心者なもので、、

やそ

Re:無題

#4

投稿記事 by やそ » 17年前

boxさんがおっしゃっているのは、
処理の流れを一つ一つ順を追って書き出してみると良い。
と言うことです。

*を使った四角形の表示。
まずは*で塗りつぶす四角形を考えてみてください。

それが出来ればあとちょっとの工夫で出来るはずです。

たて、横の数値の入力はとりあえずscanf()関数でも使って入力させてみては?
その数字が取得できればfor文でまわしてあげるだけですね。
int i, j, tate, yoko;

scanf("たて",&tate);
scanf("よこ",&yoko);

for(i=0;i<tate;i++){
  for(j=0;j<yoko;j++){
    printf("*");
  }
  printf("\n");
}
ご参考まで^^

管理人

Re:無題

#5

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

実行例がちゃんとかけてなかったので書き直しておきました。
また、プログラムでかけなくとも、taroさんは手ではかけますよね。
手で書くときどうやって書くか詳しく書いてみればわかってくるでしょう。

taro

Re:無題

#6

投稿記事 by taro » 17年前

ありがとうございます。*で塗りつぶす四角形は書けるのですが、、どうしても枠だけにするのができません。

管理人

Re:無題

#7

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

塗りつぶしたくない時に、塗りつぶさないようにすればいいだけです。
taroさんは「いつ」塗りつぶしたいのですか?
それをよく考えてみて下さい。



答え
y=0
y=3の直線と
x=0
x=4の直線上にあるとき

管理人

Re:無題

#8

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

ほぼ答えになってしまいますが、
例えば10x10のエリア上にy<=xかつy>=x-4の範囲で塗りつぶしたい時は以下のようにかけますよね。
#include <stdio.h>

int main(void)
{
	int i,j;
	int x_Length=10, y_Length=10;
	for(i=0;i<y_Length;i++){
		for(j=0;j<x_Length;j++){
			if(j>=i && j<=i+4)
				printf("*");
			else
				printf(" ");
		}
		printf("\n");
	}
	printf("\n");
    return 0;
}


実行結果

*****
 *****
  *****
   *****
    *****
     *****
      ****
       ***
        **
         *

taro

Re:無題

#9

投稿記事 by taro » 17年前

やりたいことはわかっているのですがプログラムにすることができません、、、。すいません未熟者で、、

通りすがり

Re:無題

#10

投稿記事 by 通りすがり » 17年前

質問者はわからないわからないばかりじゃなく、質問しているのなら、
回答者のアドバイスや指示通りまずやってみたらどうですか?

いくらなんでも手で書く手順位分ると思いますよ。

taro

Re:無題

#11

投稿記事 by taro » 17年前

ありがとうございました。 ようやく完成することができました。お手数掛けました。

閉鎖

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