初めまして。プログラミング初心者なのでこの文章にも至らない点が多々あるかもしれませんがアドバイスお願いします。
模様を選択して、1 段から 20 段の範囲で入力された段数のピラミッドを表示するプログラム
を作成するという課題なのですが、1を入力したときは〇、2のときは△、3のときは□を使ってピラミッドを作成したいです。ピラミッドを書く模様(〇や△)は配列を用いて、指定された模様の番号を添字として用いて作成するようです。先生からはfor文を使うと良いというアドバイスをいただきました。
そのあとピラミッドの段数を入力して、先ほどの模様でピラミッドを作ります。
最後の入力した数の段数でピラミッドをつくるのは何とか少しわかりそうなのですが、最初の模様を選択するところが全く分かりません。アドバイスをお願いいたします。
<stdio.h>でmain関数を使っています。
C言語でピラミッドをつくる課題のアドバイスをいただきたいです
Re: C言語でピラミッドをつくる課題のアドバイスをいただきたいです
こんなことがしたいんかな?
#include <stdio.h>
void getShapeAndHeight(int *s, int *h)
{
do {
printf("形は?(1:○, 2:△, 3:□)"), scanf("%d", s);
} while (!(1 <= *s && *s <= 3));
do {
printf("段数は?(1から20)"), scanf("%d", h);
} while (!(1 <= *h && *h <= 20));
}
void drawPyramid(int n, int h)
{
char *s[] = { "", "○", "△", "□" };
int x, y;
for (y = 0; y > -h; y--) {
for (x = -h + 1; x <= h - 1; x++) {
printf("%s", (y <= x && y <= -x) ? s[n] : " ");
}
putchar('\n');
}
}
int main(void)
{
int shape, height;
getShapeAndHeight(&shape, &height);
drawPyramid(shape, height);
return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。