C言語でフロイドの逆三角形を出力するプログラムの書き方
プログラムの概要
フロイドの三角形(Floyd's Triangle)は、自然数を直角三角形状に並べた数の配列で、コンピュータサイエンス教育の場でよく使われる定番の題材です。名称は計算機科学者のロバート・フロイド(Robert Floyd)にちなんでいます。左上隅の「1」を起点として、連続する自然数を行ごとに順番に埋めていくことで定義されます。
1 15 14 13 12 11 2 3 10 9 8 7 4 5 6 6 5 4 7 8 9 10 3 2 11 12 13 14 15 1 フロイドの三角形 フロイドの逆三角形
アルゴリズム
フロイドの三角形を出力する手順
1. フロイドの三角形を出力する行数を受け取る 2. 1行目には値「1」を表示する 3. 2行目には「2」と「3」の2つの値を表示する 4. 3行目には「4」「5」「6」の3つの値を表示する 5. 指定された行数に達するまで同様の処理を繰り返す
フロイドの逆三角形を出力する手順
1. フロイドの逆三角形を出力する行数を受け取る 2. 逆三角形の形に従って、値を降順(逆順)に表示していく
C言語によるサンプルコード
/* フロイドの逆三角形を出力するプログラム */
#include<stdio.h>
int main() {
int r,c=1;
int rows,revrows,r1,c1,d;
clrscr();
printf("Enter number of rows to print the Floyd's Triangle: ");
scanf("%d", &rows);
printf("\n");
for (r=1;r<=(rows*(rows+1))/2;r++){
printf("%d ",r);
if(r==(c*(c+1))/2){
printf("\n");
c++;
}
}
printf("\n\n");
/* フロイドの逆三角形の出力 */
printf("Enter number of rows to print the reverse of Floyd's Triangle: ");
scanf("%d",&revrows);
printf("\n\n");
printf("Reverse of Floyd's Triangle\n");
printf("\n\n");
d = (revrows*(revrows+1))/2;
for(r1=revrows;r1>=1;r1--){
for(c1=r1;c1>=1;c1--,d--){
printf("%4d", d);
}
printf("\n");
}
getch();
return 0;
}なお、clrscr() と getch() は古いTurbo C系コンパイラが提供する conio.h 依存の関数です。GCCやClangなど近年の標準的なコンパイラで実行する場合は、これらの行を削除すればそのまま動作します。
実行結果

-
C言語で正方形の中に正方形を表示するプログラムの作り方
プログラムの概要本プログラムは、C言語を使って「正方形の中に正方形」というパターンをコンソールに出力するものです。実行すると、以下のように二重の正方形が表示されます。アルゴリズム描画する外側の正方形の行数をユーザーから入力として受け取る。指定された行数をもとに、外側の正方形を表示する。外側の正方形の内側に、もう一つ小さな正方形を表示する。サンプルコード以下が、正方形の中に正方形を表示するC言語プログラムの完全なソースコードです。/* Program to print Square inside Square */#include <stdio.h>int main(){
-
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番目の列から出力を