C言語で数値パターンを出力するプログラムの作り方
プログラムの概要
このプログラムは、ユーザーから行数を入力してもらい、それに応じた数値パターンを画面に出力するものです。
例として、入力が「5行」の場合、次のようなパターンが出力されます。
1 6 2 10 7 3 13 11 8 4 15 14 12 9 5
一見複雑に見えるこのパターンにも、きちんとした規則性があります。各行の先頭の数値は「1、6、10、13、15」と増加幅が5→4→3→2と1ずつ減っていき、行の中でも右に進むほど差が大きくなる仕組みです。
アルゴリズム
・各行の末尾側から順にパターンを出力する ・まず各行の最後の列を確定させる ・2行目以降は後ろから2番目の列から出力を開始する ・ユーザーが指定した行数に達するまで繰り返す
サンプルコード
/* 数値パターンを出力するプログラム */
#include<stdio.h>
int main()
{
int k, l, m, count=1;
int rows;
clrscr();
printf("\n 数値パターンの行数を入力してください: ");
scanf("%d",&rows);
for (k = 1; k <= rows; k++) {
m = count;
for (l = 1; l <= k; l++) {
printf("%d",m);
m = m - (rows + l - k);
}
printf("\n");
count = count + 1 + rows - k;
}
getch();
return 0;
}
コードのポイント
count の更新: 外側のループごとに count = count + 1 + rows - k; を実行することで、次の行の先頭になる数値を求めています。k番目の行では残りの行数が減るため、増加幅も自動的に小さくなります。
行内の数値の計算: 内側のループでは m = m - (rows + l - k); により、列位置(l)に応じて差分を変えながら左方向へ数値を並べています。
注意点: clrscr() と getch() はTurbo Cなど古い環境専用の関数です。GCCなどの現代的なコンパイラで動かす場合は、これらを削除するか、getchar() に置き換えてください。
実行結果


-
【C言語】数字パターンを出力するプログラムの作り方
プログラムの概要 数値パターンとは、「パターンルール」と呼ばれる規則に基づいて生成された数列のことです。パターンルールでは、1つまたは複数の数学的操作を用いて、数列内の連続する数値同士の関係を表現します。 C言語では、for文による繰り返し処理を組み合わせることで、このような規則性のある数字パターンを簡単に出力できます。本記事では、代表的な2種類のパターン(三角形型とひし形型)を出力するプログラムを紹介します。 パターンの例 パターン1(三角形型) 1 2 6 3 7 10 4 8 11 13 5 9 12 14 15 パターン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 の行列を生成し、それを対角方向に走査しながら別の行列へ値を格納する」というアプローチが思い浮かびます