C言語で正方形の中に正方形を表示するプログラムの作り方
プログラムの概要
本プログラムは、C言語を使って「正方形の中に正方形」というパターンをコンソールに出力するものです。実行すると、以下のように二重の正方形が表示されます。

アルゴリズム
- 描画する外側の正方形の行数をユーザーから入力として受け取る。
- 指定された行数をもとに、外側の正方形を表示する。
- 外側の正方形の内側に、もう一つ小さな正方形を表示する。
サンプルコード
以下が、正方形の中に正方形を表示するC言語プログラムの完全なソースコードです。
/* Program to print Square inside Square */
#include <stdio.h>
int main()
{
int r, c, rows;
clrscr();
printf("Enter the Number of rows to draw Square inside a Square: ");
scanf("%d", &rows);
printf(" ");
for (r = 1; r <= rows; r++){
for (c = 1; c <= rows; c++){
if ((r == 1 || r == rows || c == 1 || c == rows) || (r >= 3 && r <= rows - 2 && c >= 3 && c <= rows - 2) && (r == 3 || r == rows - 2 || c == 3 || c == rows - 2)){
printf("#");
}
else{
printf(" ");
}
}
printf(" ");
}
getch();
return 0;
}
コードの解説
このプログラムの核心は、二重ループ内の条件式です。各行・各列の座標 (r, c) に対して、記号 # を出力するかどうかを次のように判定しています。
- 外側の枠線:
r == 1 || r == rows || c == 1 || c == rows— 1行目・最終行、および1列目・最終列にあたる位置に#を出力します。 - 内側の正方形:
r >= 3 && r <= rows - 2 && c >= 3 && c <= rows - 2の範囲内で、さらにその境界(3行目・rows-2行目・3列目・rows-2列目)にあたる位置に#を出力します。 - その他の部分: 上記以外の位置には空白(スペース)を出力します。
なお、clrscr() と getch() は Turbo C などの古い開発環境固有の関数です。GCC や Clang などの現代的な環境で動作させる場合は、これらの呼び出しを削除するか、getch() を標準の getchar() に置き換えてください。また、内側の正方形が正しく描かれるためには、最低でも5行以上の行数を入力する必要があります。
実行結果
たとえば行数として 7 を入力した場合、次のような出力が得られます。
#######
# #
# ### #
# # # #
# ### #
# #
#######

-
【C言語】正方形の中に描かれた葉の形の面積を求めるプログラム
正方形の中の葉の面積とは?正方形の中に2つの四分円(90度の扇形)が交わってできる「葉」のような形。この面積を求めるには、図形をいくつかの部分に分解してそれぞれの面積を計算し、それらを組み合わせるのが基本的な考え方です。ここでは、葉の形を2つの同じ部分に分割して考えます。面積の計算手順まず、最初の部分 AECA の面積を求めます。これは次のように表せます。部分AECAの面積 = 四分円 AECDA の面積 − 三角形 ACDA の面積葉全体はこの部分が2つで構成されているため、最終的な公式は次のようになります。葉の面積 = 2 ×(四分円の面積 − 三角形の面積)= a2 ×(π / 2 −
-
正方形の中にある葉の形の面積を求める方法
ここでは、正方形ABCDの内部に存在する、下図のような葉の形(リーフ形状)の面積を求める方法を解説します。正方形の各辺の長さは「a」とします。この葉の形は、互いに等しい2つの部分で構成されています。各部分の面積を p とすると、次のようになります。したがって、葉全体の面積は 2p となります。計算式葉の形は半径 a の円弧によって囲まれた領域から成り立っているため、その面積は以下の公式で求められます。葉の面積 = a2 × (π/2 − 1)実装例(C++)#include <iostream> using namespace std; float leafArea(float a