1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   掲示板ランキング



掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5798

アスタリスクの表示について。
投稿者---紗月(2006/06/06 20:26:44)


*
**
***
****

という風にアスタリスクの三角形が表示できるプログラムのソースが演習問題でありましたが、これの逆のアスタリスクの三角形を表示するにはどのようなプログラムにすればいいかどなたかわかるかたいますか?
いろいろ試してみたんですがなかなかうまくいかず困っています。
どなたかわかる方がいらっしゃいましたら教えていただきたいです。
よろしくお願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:アスタリスクの表示について。 5799 iijima 2006/06/06 20:41:42


No.5799

Re:アスタリスクの表示について。
投稿者---iijima(2006/06/06 20:41:42)


上下逆なら、
*4個出力 改行
*3個出力 改行
*2個出力 改行
*1個出力 改行

左右逆なら、
空白3個出力 *1個出力 改行
空白2個出力 *2個出力 改行
空白1個出力 *3個出力 改行
空白0個出力 *4個出力 改行

とすればよいです。

> いろいろ試してみたんですがなかなかうまくいかず

どのように試したのか、どこがどううまくいかないのかを具体的に説明すれば、
もっと的確な回答がつく可能性が高くなります。


この投稿にコメントする

削除パスワード

No.5800

Re:アスタリスクの表示について。
投稿者---紗月(2006/06/06 20:52:29)


回答ありがとうございました。
for文の中をいろいろ変えてやっていました。
ですが、左右逆にならなくてアスタリスクが大量に表示されて止まらなかったりしました…。


>左右逆なら、
空白3個出力 *1個出力 改行
空白2個出力 *2個出力 改行
空白1個出力 *3個出力 改行
空白0個出力 *4個出力 改行

回答してくださったのに申し訳ありませんが、
これは2つのfor文の下にprintfを4つ作るということですか?


この投稿にコメントする

削除パスワード

No.5801

Re:アスタリスクの表示について。
投稿者---iijima(2006/06/06 21:33:34)


> for文の中をいろいろ変えてやっていました。

閲覧者は元のプログラムを見ていないし、どのように「いろいろ」変えたのかの
説明もないので、「2つのfor文」とか「printfを4つ」とか言われても全然理解
できません。
したがって、あなたのプログラムのどこをどう直せば良いかの検討は不可能です。

> 空白3個出力 *1個出力 改行
> 空白2個出力 *2個出力 改行
> 空白1個出力 *3個出力 改行
> 空白0個出力 *4個出力 改行

これを実装する場合の考え方の例を掲げます。
i行目における' '(空白)の個数と'*'の個数を、nとiを使って表す方法を見いだす
のがポイントです。

    n=4
    n回繰り返し:i=0,1,..,(n-1)
    {
        n-(i+1)回繰り返し
        {
            ' '(空白)を出力
        }
        (i+1)回繰り返し
        {
            '*'(アスタリスク)を出力
        }
        '\n'(改行)を出力
    }



この投稿にコメントする

削除パスワード

No.5803

Re:アスタリスクの表示について。
投稿者---紗月(2006/06/06 21:50:14)


申し訳ありませんでした。

#include <stdio.h>

int main(void)
{
int i,j;

for (i=0;i<10;i++) {
for (j=0;j<=i;j++) {
printf("*");
}
printf("\n");
}
return 0;
}


ここのサイトにあった、このようなプログラムを使いました。
私的にはfor文をいじればいいのかと思って
j<5にしてみたり++を--に変えたりしたんですがうまくいきません。



この投稿にコメントする

削除パスワード

No.5804

Re:アスタリスクの表示について。
投稿者---iijima(2006/06/06 22:32:32)


> j<5にしてみたり++を--に変えたりしたんですがうまくいきません

適当にいじってもうまく行くはずがありません。
元のプログラムは次のような構造であることは理解できますか?

    10回繰り返し:i=0,1,2...9
    {
        (i+1)回繰り返し※
        {
           '*'出力
        }
        改行出力
    }

左右逆と言っても、各行の*の数は元のプログラムと同じなのですから、*を
右揃えにすることを考えます。
つまり、*が出力される前に必要な数だけ空白を出力すれば良いのです。

具体的には、※印の直前に「' '(空白)出力を『必要な回数』繰り返す」処理
を加えます(前回私が提示した例と同じになる)。
『必要な回数』は、全体の行数(この場合は10)とiで計算できます。



この投稿にコメントする

削除パスワード

No.5806

Re:アスタリスクの表示について。
投稿者---紗月(2006/06/06 23:08:40)


結構考えたんですがスペースがあいただけでおなじ形の三角形になってしまいました。
n-(i+1)というのをもう少し教えていただけませんか。
何度も申し訳ありません。


#include <stdio.h>

int main(void)
{
int i,j,n;

for (i=0;i<10;i++) {
for(n=0;n<10;n++){
printf(" ");
}
for (j=0;j<=i;j++) {
printf("*");
}
printf("\n");
}
return 0;
}



この投稿にコメントする

削除パスワード

No.5807

Re:アスタリスクの表示について。
投稿者---RAPT(2006/06/06 23:38:55)


まずは、for文を使わないで、printf() だけ書いてみてください。
printf("**********\n");
:
その結果、どうなればいいかが見えてから、これをfor文を使って
表現しようとしてみると、視覚的になって分かりやすいかもしれません。



この投稿にコメントする

削除パスワード

No.5808

Re:アスタリスクの表示について。
投稿者---紗月(2006/06/06 23:51:44)


できました!!
何度もお尋ねして申し訳ありませんでした。
本当にありがとうございました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ