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

C言語で自然数を列方向に出力するプログラムの作り方


プログラムの概要

本記事では、C言語を使って自然数を列方向(縦方向)に並べたパターンを出力する方法を解説します。完成イメージは以下のとおりです。

1
2 6
3 7 10
4 8 11 13
5 9 12 14 15

一見複雑に見えるこの数列も、行と列の関係さえ理解できれば、シンプルなループ処理だけで実現できます。

アルゴリズムの考え方

変数 i は行番号、j は列番号を表し、ここでは5行分のパターンを作成します。

  • 外側のループで各行(i = 1〜5)を順に処理する
  • 内側のループに入る前に、k を i の値で初期化する
  • 内側のループで各列(j = 1〜i)を処理する
  • 現在の k の値を表示する
  • 表示後、k に「5 - j」を加算して次の列の値を求める

ポイントは「k += 5 - j」という増分計算です。1列目から2列目へは +4、2列目から3列目へは +3 というように、列が進むごとに加算値が1ずつ減っていくため、斜め方向に数が並ぶ独特のパターンが生まれます。

例えば3行目を見てみましょう。初期値は 3 で、その後 3+4=7、7+3=10 と続き、「3 7 10」という列が完成します。

サンプルコード

/* 自然数を列方向に出力するプログラム */
#include<stdio.h>
int main(){
    int i, j, k;
    printf("Printing the Numbers in Columns wise: ");
    printf("\n\n");
    for(i=1;i<=5;i++){
        k = i;
        for(j=1;j<=i;j++){
            printf("%d ", k);
            k += 5-j;
        }
        printf("\n");
    }
    getch();
    return 0;
}

なお、getch() は Windows 環境向けの非標準関数のため、使用するには #include<conio.h> が必要です。Linux や macOS などでは、標準的な getchar() に置き換えるとよいでしょう。

実行結果

このプログラムをコンパイルして実行すると、冒頭で示したとおりの出力が得られます。

C言語で自然数を列方向に出力するプログラムの作り方

  1. Cプログラムで行列を対角パターンに沿って数値出力する方法

    この課題は、n×nの行列を対角パターンで出力することです。 例えば n が 3 の場合、対角パターンに従って行列を出力すると、次のような配置になります。 そして、実際の出力結果は以下の通りです。 実行例 Input: 3 Output: 1 2 4 3 5 7 6 8 9 Input: 4 Output: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 16 考え方 一見すると、「数値 n を受け取り n×n の行列を生成し、それを対角方向に走査しながら別の行列へ値を格納する」というアプローチが思い浮かびます

  2. 指定した範囲内のすべての素数を出力するPythonプログラム

    この記事では、以下の問題文に対する解決方法について学んでいきます。 問題文 ある区間が与えられたとき、その範囲内に含まれるすべての素数を求めて出力する必要があります。 ここでは、素数の基本的な定義に基づいた全探索(ブルートフォース)によるアプローチを紹介します。素数とは、「1とその数自身のみを約数として持ち、それ以外の数を約数に持たない自然数」のことです。 この定義に基づき、各数値が素数の条件を満たしているかどうかを判定し、条件が真(True)と評価されるたびに出力処理を行います。 それでは、実際の実装例を見ていきましょう。 実装例 start = 1 end = 37 for val in