visual studio2008でこのプログラムを実行してみたのですが。どうしてもきれいなピラミッドになりません。
ご指摘お願いします。
#include <stdio.h>
int main (void)
{
int a,j,i,o;
printf("段数を入れるんだお:");
scanf("%d",&a);
printf("\n");
printf(" /⌒ ⌒\\n");
printf(" /( ●) (●)\\n");
printf(" /::::⌒(__人__)⌒::: \ ピラミッドを作るお!\n");
printf(" | |r┬-| |\n");
printf(" \ `ー'´ /\n");
printf("\n\n");
j=1;
while (j<=a){
i=0;
while(i< a-1) {
printf(" ");
i++;
}
o=0;
while(o<2*j-1){
printf("*");
o++;
}
printf("\n");
j++;
}
return(0);
}
ピラミッドアート
Re: ピラミッドアート
j=1;
while (j<=a){
i=0;
while(i< a-1) {
printf(" ");
i++;
}
o=0;
while(o<2*j-1){
printf("*");
o++;
}
printf("\n");
j++;
}問題があります。
jが行数(上からの段数)を示しているのですから,ループ回数にjが影響することが必要です。
すなわちこの部分です。
>while(i< a-1) {
不思議に私が思うのは,このプログラムを自分で作ったのなら,こんな間違いはしないだろうという
ことです。どうみても,他人のプログラムを入力して,間違って入力したとしか思えない。
non
Re: ピラミッドアート
きれいなピラミッド、というのはどういう出力結果を指すのでしょうか。kirara さんが書きました:どうしてもきれいなピラミッドになりません。
それを正しく説明できれば、プログラムの正しいロジックが見えるかもしれません。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- bitter_fox
- 記事: 607
- 登録日時: 15年前
- 住所: 大阪府
Re: ピラミッドアート
こんなコードがころがっていました。
#include <stdio.h>
void draw(int x, int y, int n)
{
putchar((y <= x + n - 1 && y >= -x - n + 1) ? '*' : ' ');
}
void pyramid(void)
{
int n, x, y;
printf("段数:"); scanf("%d", &n);
for (x = -n + 1; x <= 0; x++) {
for (y = -n + 1; y <= n - 1; y++)
draw(x, y, n);
putchar('\n');
}
}
int main(void)
{
pyramid();
return 0;
}