自力でピラミッド作ったが・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
まるくま
記事: 39
登録日時: 7年前
住所: 群馬県

自力でピラミッド作ったが・・・

#1

投稿記事 by まるくま » 7年前

自力でピラミッド作れたんでとてもうれしかったです(`・ω・´)(こんなことで喜んじゃいけないか(笑))

ですが・・・少し気になることがあります。

コード:

#include <stdio.h>

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

	 printf("何段ですか:");
	 scanf("%d", &n);

	 for(i=0; i<n; i++){
		 for(j=0; j<n-i; j++){
			 putchar(' ');
		 }
		 for(j=0; j<i+(i-1); j++){
			 putchar('*');
		 }
		 putchar('\n');
	 }
	 return(0);
 }
これを実行したときにピラミッドは問題なく作れるんですが、
段数を入力して、からピラミッドのてっぺんの*
まで1行スペースがあるんですけど何かも違ってますかね?

あんま気にしないほうがいいですか?

アバター
みけCAT
記事: 6247
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 自力でピラミッド作ったが・・・

#2

投稿記事 by みけCAT » 7年前

i=0のとき、i+(i-1)==-1であり、0より小さいです。

コード:

for(i=0; i<n; i++){

コード:

for(i=1; i<=n; i++){
としたらどうですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ホヅミ
記事: 110
登録日時: 9年前

Re: 自力でピラミッド作ったが・・・

#3

投稿記事 by ホヅミ » 7年前

ついでに

コード:

for(j=0; j<i+(i-1); j++){

コード:

for(j=0; j<i*2-1); j++){
にするとより一層プログラムがイケメンに見えるようになりますよ
お好みですがw

初級者
記事: 200
登録日時: 9年前

Re: 自力でピラミッド作ったが・・・

#4

投稿記事 by 初級者 » 7年前

質問者さんの出力結果は、段数が1個足りないように見えます。
以下は、ちょっとした例です。

コード:

#include <stdio.h>
 
int main(void)
{
    int x, y, n;
    
    printf("何段ですか:");
    scanf("%d", &n);
    
    for (y = n - 1; y >= 0; y--) {
        for (x = -n + 1; x <= n - 1; x++) {
            putchar((y <= x + n - 1 && y <= -x + n - 1) ? '*' : ' ');
        }
        putchar('\n');
    }
    return 0;
}

derok
記事: 51
登録日時: 7年前

Re: 自力でピラミッド作ったが・・・

#5

投稿記事 by derok » 7年前

全段で*を2個づつ増やせばいいと思います。

まるくま
記事: 39
登録日時: 7年前
住所: 群馬県

Re: 自力でピラミッド作ったが・・・

#6

投稿記事 by まるくま » 7年前

みけCATさん、ホヅミさん、初級者さん、derokさん、ありがとうございます(`・ω・´)

たしかに1段足りませんでした(汗

2点ほど修正したらきちんと実行できるようになりました!

i=0だったらi+(i-1)の部分が-1になることに気づきませんでした(汗

初級者さんのは少しずつわかってきました!でもまだ難しい(´・ω・`)

コード:

#include <stdio.h>

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

	 printf("何段ですか:");
	 scanf("%d", &n);

	 for(i=1; i<=n; i++){
		 for(j=0; j<n-i; j++){
			 putchar(' ');
		 }
		 for(j=0; j<i*2-1; j++){
			 putchar('*');
		 }
		 putchar('\n');
	 }
	 return(0);
 }

閉鎖

“C言語何でも質問掲示板” へ戻る