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

【C言語】アルファベットをスパイラルパターンで出力するプログラムの作り方

スパイラルパターンとは

アルファベットをスパイラル(螺旋)状のパターンで表現すると、以下のように出力されます。

【C言語】アルファベットをスパイラルパターンで出力するプログラムの作り方

このパターンの特徴は、2文字ずつペアで出力され、行ごとに「A B」「D C」「E F」「H G」…というように、昇順と降順が交互に入れ替わる点です。これにより、折り返しながら進むスパイラル(蛇行)のような模様が描かれます。

ロジックのポイント

スパイラルパターンを出力するためのロジックは、以下の手順で構成されています。

  • まず、入力された行数(rows)が1以上13以下の範囲内にあるかをチェックします。アルファベットは26文字あるため、2文字ずつペアで出力する場合、最大行数は13行となります。
  • forループでは変数iを1から始め、2ずつ増加させながら「rows × 2」まで繰り返します。
  • カウンタ変数kが奇数の場合は「i+64 → i+65」の順(昇順)、偶数の場合は「i+65 → i+64」の順(降順)で文字を出力します。ASCIIコードにおいて65が'A'に対応するため、iに64または65を加算することで対応するアルファベットを取得できます。
  • kをインクリメントしながら判定を切り替えることで、行ごとの出力方向が反転し、スパイラル状の見た目が生まれます。
  • 範囲外の値が入力された場合は、エラーメッセージを表示して処理を終了します。
if(rows<=13 && rows>=1){
    for(i=1;i<=rows*2;i+=2){
        if(k%2==1){
            printf("%c %c",i+64,i+65);
            k++;
        }else{
            printf("%c %c",i+65,i+64);
            k++;
        }
        printf("\n");
    }
}
else{
    printf("Please Enter from 1 to 13 only\n");
}

サンプルプログラム

以下は、アルファベットをスパイラルパターンで出力するC言語の完全なソースコードです。

#include<stdio.h>
main(){
    int i,rows,k=1;
    printf("Enter number of Rows for Spiral Alpha Pattern from 1 to 13\n");
    scanf("%d",&rows);
    if(rows<=13 && rows>=1){
        for(i=1;i<=rows*2;i+=2){
            if(k%2==1){
                printf("%c %c",i+64,i+65);
                k++;
            }else{
                printf("%c %c",i+65,i+64);
                k++;
            }
            printf("\n");
        }
    }else{
        printf("Please Enter from 1 to 13 only\n");
    }
}

補足: 現在のC標準(C99以降)では、main関数の戻り値としてint型を明示し、最後にreturn文を記述することが推奨されています(int main(void))。また、scanf()の戻り値を確認することで、より堅牢なプログラムになります。

実行結果

上記のプログラムをコンパイルして実行すると、次のような結果が出力されます。

Enter number of Rows for Spiral Alpha Pattern from 1 to 13
10
A B
D C
E F
H G
I J
L K
M N
P O
Q R
T S

10行を指定した例では、AからTまでの20文字が2文字ずつのペアとなって出力され、行ごとに昇順・降順が反転している様子が確認できます。
このように、単純なループと条件分岐を組み合わせるだけで、視覚的に面白いパターン描画プログラムを作成できます。ぜひ行数を変えて、さまざまなパターンの変化を試してみてください。

  1. C言語で正方行列をZ字形に表示するプログラム

    プログラムの概要本記事では、C言語を使って正方行列の要素を「Z」の字形に沿って出力するプログラムを解説します。正方行列とは、行数と列数が等しい行列のことです。n行n列の行列は「n次の正方行列」と呼ばれ、2×2、3×3、4×4などの行列が該当します。Z字形出力のアルゴリズム行列の要素をZ字形で表示するには、次の3つの部分を順番に出力します。最上行(1行目):左端から右端までのすべての要素対角成分:右上から左下へ向かう斜めの要素(両端の角は除く)最下行(最終行):すべての要素これらを順につなげると、アルファベットの「Z」の形が完成します。3×3の行列の場合: a00 a01 a02

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

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