【C言語】for文でさまざまな三角形を書く
はじめに
プログラミングを学ぶとき、繰り返し処理(ループ)を使った課題に取り組むことがよくあります。その一つが、画面に直角三角形を描くプログラムです。C言語では、「for文」を使って簡単に繰り返し処理を行い、直角三角形を描画することができます。今回は、その基本的な方法と応用を紹介します。
基本的なコード例
まずは、最もシンプルな直角三角形を描くコードから見ていきましょう。このコードでは、for文を使って行ごとに文字(*)を出力していきます。
#includeint main() { int i, j; int height = 5; // 三角形の高さ // 行ごとの処理 for (i = 1; i <= height; i++) { // 列ごとの処理 for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); // 次の行に移る } return 0; }
このコードでは、変数iが行番号を、変数
* ** *** **** *****
ここでは高さが5の直角三角形を描画していますが、heightの値を変更すれば、三角形の大きさを簡単に変更できます。
応用例
次に、直角三角形の向きを変更したり、空白を使って図形を整えたりする応用的な例を紹介します。
右下に直角三角形を描く
直角が右下に来る三角形を描く場合、空白をうまく使う必要があります。例えば、次のようにコードを書きます。
#includeint main() { int i, j; int height = 5; // 三角形の高さ // 行ごとの処理 for (i = 1; i <= height; i++) { // 空白を出力 for (j = 1; j <= height - i; j++) { printf(" "); } // 星を出力 for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); // 次の行に移る } return 0; }
このコードでは、最初のfor文で空白を、2番目のfor文で星を出力します。実行結果は次のようになります:
* ** *** **** *****
逆三角形を描く
直角三角形を逆さに描く例も見てみましょう。次のコードで実現できます。
#includeint main() { int i, j; int height = 5; // 三角形の高さ // 行ごとの処理 for (i = height; i >= 1; i--) { // 星を出力 for (j = 1; j <= i; j++) { printf("*"); } printf("\n"); // 次の行に移る } return 0; }
実行結果は次のようになります:
***** **** *** ** *
等辺直角三角形を描く
直角三角形の他にも、等辺直角三角形を描く方法もあります。左右対称な三角形にするためには、空白を調整する必要があります。
#includeint main() { int i, j; int height = 5; // 三角形の高さ // 行ごとの処理 for (i = 1; i <= height; i++) { // 空白を出力 for (j = 1; j <= height - i; j++) { printf(" "); } // 星を出力 for (j = 1; j <= i * 2 - 1; j++) { printf("*"); } printf("\n"); // 次の行に移る } return 0; }
実行結果は次のようになります:
* *** ***** ******* *********
まとめ
for文を使って直角三角形を描く方法について、基本的な構文から応用的な例まで紹介しました。C言語のfor文は、繰り返し処理を行う際に非常に強力なツールです。直角三角形を描く課題を通して、繰り返しの基本的な使い方や、空白や星の調整方法を学ぶことができました。これらの知識を応用して、より複雑な図形を描くことも可能です。