Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語でアロースターパターン(矢印型)を出力するプログラムの作り方


整数 n が与えられたとき、最大 n 個の星(アスタリスク)で構成される矢印型のパターンを出力するCプログラムを紹介します。星形パターンの出力は、二重ループ(ネストしたforループ)の理解を深めるのに最適な練習問題です。

たとえば、入力が 4 の場合、出力は次のような矢印の形になります。

C言語でアロースターパターン(矢印型)を出力するプログラムの作り方

出力例

Input: 3
Output:

C言語でアロースターパターン(矢印型)を出力するプログラムの作り方

Input: 5
Output:

C言語でアロースターパターン(矢印型)を出力するプログラムの作り方

アプローチ

このパターンを出力するための基本的な考え方は以下の通りです。

  • 整数値を入力として受け取ります。
  • まず、n 個のスペースと n 個の星を出力します。
  • n > 1 となる間、行ごとに星の数を減らしながら出力します。
  • 次に、n に達するまで星の数を増やしながら出力します。
  • スペースと星を増加順に出力し、矢印の下側を完成させます。

アルゴリズム

Start
In function int arrow(int num)
    Step 1-> declare and initialize i, j
    Step 2-> Loop For i = 1 and i <= num and i++
        Loop For j = i and j < num and j++
            Print a space
        Loop For j = i and j <= num and j++
            Print "*"
            Print newline
    Step 3-> Loop For i = 2 and i <= num and i++
        Loop For j = 1 and j < i and j++
            Print a space
        Loop For j = 1 and j <= i and j++
            Print "*"
            Print newline
In function int main()
    Step 1-> declare and initialize num = 4
    Step 2-> call arrow(num)

サンプルコード

#include <stdio.h>
// 矢印パターンを出力する関数
int arrow(int num) {
    int i, j;
    // 矢印の上半分を出力
    for (i = 1; i <= num; i++) {
        // スペースを出力
        for (j = i; j < num; j++) {
            printf(" ");
        }
        // パターンの * を出力
        for (j = i; j <= num; j++) {
            printf("*");
        }
        printf("\n");
    }
    // 矢印の下半分を出力
    for (i = 2; i <= num; i++) {
        // スペースを出力
        for (j = 1; j < i; j++) {
            printf(" ");
        }
        // パターンの * を出力
        for (j = 1; j <= i; j++) {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}
int main() {
    // 入力値を設定
    int num = 4;
    // 関数を呼び出し
    arrow(num);
    return 0;
}

コードの解説

このプログラムは、大きく2つの部分に分かれています。

上半分(星が減っていく部分)

外側のループが 1 から num まで回るたびに、内側のループで「(num − i) 個のスペース」と「i 行目以降の星」を出力します。これにより、右側に寄りながら星の数が減っていく形状が作られます。

下半分(星が増えていく部分)

i を 2 から num まで増やしながら、「(i − 1) 個のスペース」と「i 個の星」を出力します。これで矢印の軸部分が下方向へ伸びていきます。

実行結果

上記のコードをコンパイルして実行すると、次のような出力が得られます。

C言語でアロースターパターン(矢印型)を出力するプログラムの作り方


  1. 【C言語】六角形パターンを出力するプログラムの作成方法

    本記事では、整数「n」が与えられたとき、その値をもとにアスタリスク(*)で構成された六角形パターンを生成し、画面に出力するC言語プログラムを解説します。ループと条件分岐を組み合わせることで、きれいな六角形の図形をテキストベースで描くことができます。 実行例 入力:n = 5 の場合の出力は以下のようになります。 入力:n = 4 の場合の出力は以下のようになります。 プログラムの基本的なアプローチ このプログラムでは、六角形パターンを以下の手順で作成しています。 ユーザーから整数「n」を入力として受け取ります。 パターン全体を「上部」「中央部」「下部」の3つの部分に分割して考えます。

  2. 【初心者向け】平行四辺形の外周(周長)を計算するC言語プログラム

    本記事では、2つの辺の長さが与えられた平行四辺形の外周(周囲の長さ)を計算し、その結果を表示するC言語プログラムを紹介します。数式の考え方からアルゴリズム、実際のコードまで順を追って解説していきます。 平行四辺形とは? 平行四辺形とは、次のような性質を持つ四角形の一種です。 向かい合う2組の辺がそれぞれ平行である 向かい合う角の大きさが互いに等しい 2本の対角線が互いの中点で交わる 下の図では、「a」と「b」が平行四辺形の隣り合う2つの辺の長さを表しています。 平行四辺形の外周の求め方 平行四辺形の外周(周長)は、次の式で定義されます。 外周 = 2 × (a + b)   = 2 ×