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

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

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

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

Visual C++

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

353閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

C

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

Visual C++

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2019/07/08 23:05

編集2019/07/09 01:52

質問内容

今、八角形と多重ピラミッドを描画するプログラムを考えているのですが、全く分からず切羽詰まってしまいました。何処かご指摘いただけるところがありましたら回答よろしくお願いいたします。
辺の数によって幾つかの処理を分けていただけると幸いです。

ソースコード

int main(void) { int hen, i, j; printf("辺の数(2~5)を入力してください。 \n"); scanf_s("%d", &hen); //三角形のループ printf("三角形やな \n"); for (i = 1; i <= hen; i++) { for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); } rewind(stdin); getchar(); //逆三角形のループ printf("逆三角形やな \n"); for (int i = 1; i <= hen; i++) { for (int j = 1; j <= hen - (i - 1); j++) { printf("* "); } printf("\n"); } rewind(stdin); getchar(); //正方形のループ printf("正方形やな \n"); for (int i = 1; i <= hen; i++) { for (int j = 1; j <= hen; j++) { printf("*"); } printf("\n"); } rewind(stdin); getchar(); //三角旗のループ printf("三角旗やな \n"); for (i = 1; i <= hen; i++) { for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); } for (i = 1; i <= hen; i++) { for (j = 1; j <= hen - (i - 1); j++) { printf("*"); } printf("\n"); } rewind(stdin); getchar(); //三角形ピラミッドのループ printf("三角形ピラミッドやな \n"); for (int i = 1; i <= hen; i++) { for (int k = 1; k <= hen - i; k++) { printf(" "); } for (j = 1; j <= (i * 2) - 1; j++) { printf("* "); } printf("\n"); } rewind(stdin); getchar(); //ダイヤ形のループ printf("ダイヤやな \n"); /* 上半分 */ for (i = 0; i < hen / 2; i++) { for (j = 0; j < hen / 2 - i; j++) { printf(" "); } for (j = 0; j < i * 2 + 1; j++) { printf("*"); } printf("\n"); } /* 下半分 */ for (i = hen / 2; i >= 0; i--) { for (j = 0; j < hen / 2 - i; j++) { printf(" "); } for (j = 0; j < i * 2 + 1; j++) { printf("*"); } printf("\n"); } rewind(stdin); getchar(); //六角形のループ printf("六角形やな \n"); for (i = 0; i < hen; i++) { for (j = i; j < hen; j++) { printf(" "); } for (j = 0; j < hen + i * 2; j++) { printf("*"); } { printf("\n"); } for (i = hen; i > -1; i--) { for (j = i; j < hen; j++) { printf(" "); } for (j = 0; j < hen + i * 2; j++) { printf("*"); } printf("\n"); } rewind(stdin); getchar(); //八角形のループ printf("八角形ですねこれは \n"); for (i = 0; i <= hen; i++) { printf("*"); } printf("\n"); for (j = 0; j < hen; j++) { for (i = 0; i < ((hen * 2) + (hen - 2)) * (hen - 2); i++) { printf("*"); } { printf("\n"); } printf(" "); for (i = 0; i < hen; i++) { printf("*"); } } rewind(stdin); getchar(); //多重ピラミッドのループ printf("多重ピラミッドですね。 \n"); rewind(stdin); getchar(); { printf("終わりダヨ(^_-)-☆, \n"); } return 0; } }

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

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

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

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

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

k.matsuda

2019/07/08 23:23

何がわからないのかが分かりませんが、 入力された辺の数によって処理を分けたいとか、そういう事でしょうか?
fana

2019/07/09 01:24

> printf関数を使っていますよね。こんな感じで何処かご指摘... 「こんな感じ」ってどんな感じ? まったく文の繋がりがわからない. (「scanf_sを使っているね!」とか言えばいいのか…?)
退会済みユーザー

退会済みユーザー

2019/07/09 02:16

せめてどういうときにどういう出力がされるとか書くとか。 この文章だけでは、どうにも回答しようがありませんが。
退会済みユーザー

退会済みユーザー

2019/07/09 02:17

後タイトルも、見てなんとなく内容がわかるものにしてください。
guest

回答2

0

辺の数によって処理を分けるのは、if文を使います。

if(hen == 3) { //三角形の表示処理 }

コードを見る限り、三角形でも色々な種類があるようなので
どの三角形を表示させるのかという入力なども必要なのでは?と思います。

投稿2019/07/09 04:22

k.matsuda

総合スコア293

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

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

0

ベストアンサー

なぜ、タイトルを「八角形と多重ピラミッドを描画する」のように
適切なものにしないのですか?
回答者のコメントを全部読んでいますか?

以後、同じようなことを繰り返すなら、これが最後の回答になります。

C

1#include <stdio.h> // printf 2#include <stdlib.h> // malloc, free 3#include <string.h> // memset 4 5void octagon(int n) 6{ 7 int m = n*6 - 4, w = n*4 - 2, i; 8 char *a = malloc(m), *p = a + m - n*2; 9 for (i = 0; i < m; i += 2) a[i] = '*', a[i+1] = ' '; 10 a[m-1] = '\0'; 11 for (i = n; --i > 0; w += 2, p -= 4) printf("%*s\n", w, p); 12 for (i = n; --i > 0;) printf("%*s\n", w, p); 13 for (i = n; --i >= 0; w -= 2, p += 4) printf("%*s\n", w, p); 14 free(a); 15} 16 17void triangle(int n, int h) // n:積み重ね段数, h:ひとつの三角形の高さ 18{ 19 int s = n*h, t = h*2, i, j, k; 20 char *a = malloc(t), *p; 21 memset(a, '*', t), a[t-1] = '\0'; 22 for (i = 0; i < n; i++) { 23 for (p = a + t - 2, j = 1; j < t; j += 2, p -= 2) { 24 printf("%*s", --s + j, p); 25 for (k = i; --k >= 0; ) printf("%*s", t, p); 26 printf("\n"); 27 } 28 } 29 free(a); 30} 31 32int main(void) 33{ 34 octagon(5); 35 triangle(3, 5); 36}

投稿2019/07/09 03:56

kazuma-s

総合スコア8224

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問