C言語でダイヤモンド(ひし形)状の星パターンを出力する方法
C言語で星(アスタリスク「*」)を使ったダイヤモンド(ひし形)パターンをコンソールに表示するには、ネストしたforループ(二重ループ)を使用します。
ダイヤモンドパターンを作成するときのポイントは、図形を上半分と下半分の2つの部分に分けて考えることです。それぞれの部分で、先頭に出力するスペースの数と星の数を制御することで、きれいな菱形を作り出せます。
ダイヤモンドの上半分を出力するロジック
上半分の出力に使うロジックは以下の通りです。
// ダイヤモンドの上半分の出力ロジック:
for (j = 1; j <= rows; j++){
for (i = 1; i <= rows-j; i++)
printf(" ");
for (i = 1; i <= 2*j-1; i++)
printf("*");
printf("\n");
}例えば rows = 5 とした場合、このコードは次のような出力を生成します。
* *** ***** ******* *********
外側のループが行を管理し、内側の1つ目のループが行番号 j に応じて「rows - j」個のスペースを出力、2つ目のループが「2*j - 1」個の星を出力します。これにより、行が進むごとに星が2個ずつ増え、ピラミッド型が形成されます。
ダイヤモンドの下半分を出力するロジック
続いて、下半分の出力に使うロジックは以下の通りです。
// ダイヤモンドの下半分の出力ロジック:
for (j = 1; j <= rows - 1; j++){
for (i = 1; i <= j; i++)
printf(" ");
for (i = 1; i <= 2*(rows-j)-1; i++)
printf("*");
printf("\n");
}同じく rows = 5 の場合、下半分は次のように出力されます。
******* ***** *** *
下半分では上半分とは逆に、行番号 j と同じ数だけスペースを出力し、星は「2*(rows-j) - 1」個と行が進むごとに減らしていきます。この2つの処理を組み合わせることで、中央が一番太く上下対称の完全なダイヤモンド形状が完成します。
サンプルプログラム(完全なコード)
以下に、ユーザーから行数を入力してもらい、指定された大きさのダイヤモンドパターンを表示する完全なプログラムを示します。
#include <stdio.h>
int main(){
int rows, i, j;
printf("Enter no of rows\n");
scanf("%d", &rows);
/* 上半分の出力 */
for (j = 1; j <= rows; j++){
for (i = 1; i <= rows-j; i++)
printf(" ");
for (i = 1; i <= 2*j-1; i++)
printf("*");
printf("\n");
}
/* 下半分の出力 */
for (j = 1; j <= rows - 1; j++){
for (i = 1; i <= j; i++)
printf(" ");
for (i = 1; i <= 2*(rows-j)-1; i++)
printf("*");
printf("\n");
}
return 0;
}実行結果
入力として 5 を与えた場合の実行結果は次のようになります。
Enter no of rows 5 * *** ***** ******* ********* ******* ***** *** *
このように、ネストしたforループによるスペースと星の出力制御を理解すれば、ピラミッドや逆ピラミッドなど、他のさまざまなパターン表示にも応用できます。
-
【C言語】挿入ソートの仕組みと実装方法をわかりやすく解説
ソート(整列)とは、データの要素を昇順または降順のいずれかの順序に並べ替える処理のことです。C言語ではさまざまなソートアルゴリズムを実装でき、それぞれ計算量や特性が異なるため、目的に応じた使い分けが重要になります。 C言語で使われる主なソートの種類 C言語でよく利用されるソート手法には、次の5つがあります。 バブルソート(交換ソート) 選択ソート 挿入ソート(線形ソート) クイックソート(分割交換ソート) マージソート(外部ソート) 挿入ソートとは 挿入ソートは、整列済みの部分に新しい要素を適切な位置へ「挿入」していくことで、配列全体を並べ替えるアルゴリズムです。トランプの手札を順番に整
-
Pythonでパターンを出力する方法|三角形・数字・アルファベット・ピラミッドのコード例
Pythonでパターンを出力するには、ネストされた(入れ子構造の)forループを使用します。外側のループで行数を制御し、内側のループで列数を処理します。そしてprint文を工夫することで、目的に応じたさまざまなパターンを作成できます。パターンには、星(アスタリスク)パターン、数字パターン、アルファベットパターンなどがあり、三角形やピラミッドなど、さまざまな形状にも対応できます。パターン出力の基本これらのパターンは、print文を少し変更しながらforループを組み合わせることで出力できます。基本的な考え方はどのパターンも共通しており、違いはごくわずかです。ここからは、代表的なパターンのコードを実