

右下がり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.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;
}
わざわざ2パターンも有難うございます、、、
関数の使い方をあまり理解しておらず
お気を使わせてしまい申し訳ありません。
ありがとうございます!!!!

No.3
- 回答日時:
以下のようにしてください。
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;
}
No.1
- 回答日時:
なんかいろいろおかしい.
dir が 0 だと
pos = pos + dir;
で pos が変わらないし,
while (line < 10)
の中では
}else if(line < 10){
の if に意味がない.
あぁ, ほかにもおかしいところはあるからね.
しかし, なんで for 使わないんだろ.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
c言語でAからZまでを表示する...
-
変数について(足し算・引き算)
-
C言語 文字列の比較 compare
-
質問ですが
-
高(1)男子 初めてC言語でコー...
-
カレンダー作成
-
C++
-
C言語の質問です。
-
if~else文の中にまたif~else...
-
至急!!!! C言語のこのプロ...
-
分割コンパイルの初歩
-
コンパイル後のABCを改行させる...
-
C言語についてなのですが、
-
+NANってなんですか??
-
#defineで置き換えられない
-
getcによる空白文字カウントで...
-
*を使ったジグザグのラインをプ...
-
intとcharの配列のアドレスにつ...
-
プログラミングについての質問です
-
C言語で、引数が構造体の場合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
c言語で2000年以降カレンダーを...
-
c言語でAからZまでを表示する...
-
【C】fizzbuzzのトリッキーなコ...
-
strcmp
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
コマンドラインに出力した文字...
-
8人分のテストの点数を入力し、...
-
コンパイルエラーについて
-
CTRL+Dでループを抜けるには
-
(C言語)めちゃくちゃな値にな...
-
cshの文字列操作(0埋め)
-
テキストカーソル位置の取得
-
コマンドプロンプトがすぐ消える
-
printfの出力内の文字をdefine...
-
scanfに文字が入力されたときに...
-
台形の面積を求めるプログラム
-
改行について 1行に何個かづ...
-
WM_CLOSEで閉じれないウィンド...
おすすめ情報
そうです!!!!
この図を出したいんです!!