質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

Q&A

3回答

1374閲覧

指摘よろしくお願いいたします。

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

0グッド

1クリップ

投稿2019/07/06 11:49

編集2022/01/12 10:55

質問内容

こんばんは、プログラミングを初めて3か月の者です。
今、アスタリスクを用いて六角形と多重ピラミッドを描画しているのですが,全く納得のいかない出力結果になってしまいました。

六角形

イメージ説明

多重ピラミッド

イメージ説明

発生している問題

イメージ説明

該当のソースコード

printf("辺の数を入力してください"); scanf("%d",&hen); //六角形のループ for (i = 0; i < hen; i++) { for (j = 0; j < hen - i - 1; j++) { printf(" \n"); } { printf("*"); } for (j = 0; j < i + 1; j++) { printf("*"); } for (j = 0; j < i; j++) { printf("*"); } { printf("\n"); } for (i = 0; i < hen - 1; i++) { for (j = 0; j < i + 1; j++) { printf("\n"); } for (j = 0; j < hen - i - 1; j++) { printf("*"); } for (j = 0; j < hen - i - 1; j++) { printf("*"); } printf("\n"); } //多重ピラミッドのループ for(I = 0 ; i < hen ; i ++) { for( j = 0 ; j < hen*3 - 1 ; j++) { printf(); } for( j = 0 ; j < i + 1 ; j++) { printf(); } for( j = 0 ; j < i ; j++) { printf(); } for( j = 0; j - hen -(i + 1) ; j++) { printf(); } for( j = 0; j < hen - i ; j++) { printf(); } for( i = 0; i < hen ; i++) { for( j = 0 ;j < hen - 1 - i ; j++) { printf(); } printf("\n"); }

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2019/07/06 12:11 編集

・『C』のタグを付けて下さい。 ・期待している実行結果を書いて下さい。 ・現状のコードがどのように動作しているか追記して下さい。エラーが吐かれている場合、質問にそのまま貼り付けて下さい。 ・内容が想像できるよう、タイトルを具体的にして下さい。 ・次の画像に従って、コードブロックを適用して下さい。https://teratail.storage.googleapis.com/uploads/contributed_images/4c6e48a3bd0707d89f61b901fd1f8915.gif
y_waiwai

2019/07/06 12:17

このままではコードが見づらいので、質門を編集し、<code>ボタンで、出てくる’’’の枠の中にコードを貼り付けてください
thkana

2019/07/06 15:40

「エラーメッセージ」とだけ出るエラーメッセージはないはずです。エラーメッセージには、なぜコンパイラがエラーを出したのかという、問題を解析するためにとても重要な情報が書かれています。LouiS0616さんが言うように「そのまま貼り付けて」下さい。 あなたは問題を解決出来ていないのです。だから質問しているのですよね。そのあなたに、起こったことを解釈して、ソースコードにしろエラーメッセージにしろ情報の要不要を的確に判断して省略することができるのでしょうか? あなたがやったまま見たままを質問にそのまま記載することが解決への王道だと思うのですがいかがでしょう。
rubato6809

2019/07/07 00:26

提示されたプログラム断片では質問者のやりたいことがさっぱりわからないうえに、コンパイルが通る気配ありませんが、「思い外れの出力結果」とはコンパイルが通ったことを意味するのでしょうか?それともコンパイルエラーの表示が「思い外れの出力結果」でしょうか、それなら、エラー表示をコピペしてください。せめて期待する出力結果を示したら質問者のやりたいことが伝わるのではないでしょうか。
guest

回答3

0

少なくともprintf()関数には一つ以上のパラメータがないと、パラメータの数がおかしい、ということでエラーになるでしょう。

投稿2019/07/06 15:34

thkana

総合スコア7610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

イマイチな仕上がりですが.

c

1#include <stdio.h> 2/** 3 * indent個の空白の後, 幅wの左右にs個の空白を確保し間を '*' で埋めた文字列を出力する. 4 * 例) indent=14,w=18,s=7,isLast=0: <---indent---><--s-->****<--s--> 5 * isLastが!0の場合, 右の空白の代わりに改行を出力する. 6 * 例) indent=14,w=18,s=7,isLast=-1: <---indent---><--s-->****\n 7 */ 8void draw(int indent, int w, int s, int isLast) { 9 for(int i=0; i<s+indent; i++) printf(" "); 10 for(int i=0; i<w-(s*2); i++) printf("*"); 11 if(isLast) printf("\n"); 12 else for(int i=0; i<s; i++) printf(" "); 13} 14void hexagon(int n) { 15 int width=n*3-2; 16 for(int s=n-1, d=-1; s<n; s+=d, d=(s==0?1:d)) draw(0, width, s, -1); 17} 18void triangle(int n, int row) { 19 int width=n*2-1; 20 for(int i=1; i<=row; i++) { 21 for(int s=n-1; s>=0; s--) { 22 for(int j=0, indent=(row-i)*n; j<i; j++, indent=1) draw(indent, width, s, j==i-1); 23 } 24 } 25} 26int main() { 27 int n; 28 printf("辺の数を入力してください"); 29 scanf("%d",&n); 30 31 hexagon(n); 32 printf("\n"); 33 triangle(n, 3); 34}

投稿2019/07/07 12:33

jimbe

総合スコア12545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コンパイルできるコードを提示してください。
エラーがある場合は、そのエラーメッセージを書いてください。

解答の一例を示しますが、やり方は他にもいろいろ考えられます。
自分のやり方を考えてみて、あなたのコードを提示してください。

C

1#include <stdio.h> 2 3void plot(int c, int n) { while (--n >= 0) putchar(c); } 4 5void hexagon(int n) 6{ 7 int i, j; 8 for (i = n-1, j = n; i > 0; j += 2) 9 plot(' ', i--), plot('*', j), putchar('\n'); 10 for (; i < n ; j -= 2) 11 plot(' ', i++), plot('*', j), putchar('\n'); 12 13} 14 15void triangle(int n) 16{ 17 int s = n*n, t = n*2, i, j, k; 18 for (i = 0; i < n; i++) 19 for (j = 1; j < t; j += 2) { 20 plot(' ', --s), plot('*', j); 21 for (k = i; --k >= 0; ) plot(' ', t-j), plot('*', j); 22 putchar('\n'); 23 } 24} 25 26int main(void) 27{ 28 hexagon(5); 29 putchar('\n'); 30 triangle(3); 31} 32

追記

コードを修正したら、バグが入ったので、再修正しました。

投稿2019/07/07 02:38

編集2019/07/07 05:47
kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/08 22:47

printf関数を使う場合を教えていただけますでしょうか?
kazuma-s

2019/07/09 02:37

putchar('\n'); と printf("\n"); が同じ結果になるということが分からないのですか? putchar(c); は printf("%c", c); と同じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問