重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

右下がり45度のラインを*を10個使って表示し、その下に左下がり45度というように
交互に4ライン表示させ、稲妻方のジグザグラインを表示する。

place 各行の桁数をカウント
line ジグザグ内の行数をカウント

以下のようなプログラムを作ったのですが
うまくジグザグラインが表示されません、、、
お力を貸していただきたいです。。

結果としては
*が11個表示されてからジグザグが切り替わり
そこから左下がりの45度のラインはなく直線のような感じになってしまっています。。


#include<stdio.h>

int main(void)
{
int pos, zigzag, line, place, dir;

pos = 0;
dir = 0;
zigzag = 0;

while (zigzag <4){

line = 0;

while (line < 10){

place = 0;

while (place < pos){

printf(" ");
place++;

}

printf("*");
printf("\n");
pos = pos + dir;

if (place < 10){

dir = 0;
pos++;

}else if(line < 10){

dir = -1;
pos--;
}

line++;

}
zigzag++;
}

return 0;
}

質問者からの補足コメント

  • そうです!!!!
    この図を出したいんです!!

    No.2の回答に寄せられた補足コメントです。 補足日時:2019/10/27 22:57

A 回答 (4件)

No3です。

No3の回答はお気に召さなかったようですので、あなたのプログラムを修正しました。
以下のようになります。
#include<stdio.h>

int main(void)
{
int pos, zigzag, line, place, dir;

pos = 0;
dir = 0;
zigzag = 0;
while (zigzag < 4) {
line = 0;
while (line < 10) {
place = 0;
while (place < pos) {
printf(" ");
place++;
}
printf("*");
printf("\n");
if (dir == 0)
pos++;
else
pos--;
if (pos < 0){
pos = 0;
dir = 0;
}
if (pos > 9){
pos = 9;
dir = -1;
}
line++;
}
zigzag++;
}
return 0;
}
    • good
    • 0
この回答へのお礼

わざわざ2パターンも有難うございます、、、
関数の使い方をあまり理解しておらず
お気を使わせてしまい申し訳ありません。

ありがとうございます!!!!

お礼日時:2019/10/28 16:38

以下のようにしてください。


poutは、ポイント:0~9を印字する関数です。
ポイント0は、空白が0個と*です。
ポイント9は、空白が9個と*です。
mainの中の繰り返しですが、
1回目の繰り返しは、ポイント:0~9を印字を印字します。
2回目の繰り返しは、ポイント:9~0を印字を印字します。
3回目の繰り返しは、ポイント:0~9を印字を印字します。
4回目の繰り返しは、ポイント:9~0を印字を印字します。



#include<stdio.h>
void pout(int p)
{
int i;
for (i = 0; i < p; i++){
printf(" ");
}
printf("*\n");
}

int main(void)
{
int i,p;
for( i= 0; i < 4; i++){
if (i % 2 == 0){
for(p = 0; p < 10; p++){
pout(p);
}
}else{
for(p = 9; p>=0; p--){
pout(p);
}
}
}
return 0;
}
    • good
    • 0

添付図のような図が描ければ良いのでしょうか?

「*を使ったジグザグのラインをプロンプト画」の回答画像2
この回答への補足あり
    • good
    • 0

なんかいろいろおかしい.



dir が 0 だと
pos = pos + dir;
で pos が変わらないし,
while (line < 10)
の中では
}else if(line < 10){
の if に意味がない.

あぁ, ほかにもおかしいところはあるからね.

しかし, なんで for 使わないんだろ.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!