continue文を使ってループを1つだけでパターンを印刷するCプログラム
今回の課題は、continue文を活用しながら、ループをたった1つだけ使ってパターンを表示することです。通常、このようなパターンの表示には二重ループ(ネスト構造)が用いられますが、変数を上手く操作することで単一のループでも実現できます。
アルゴリズム
処理の流れは以下の通りです。外側のカウンタとして i、各行内の星の数を管理する j の2つの変数を使用します。
開始
ステップ1 → 変数iとjを宣言し、jは0で初期化。行数nは6とする
ステップ2 → ループ:i=1 から i<=n まで繰り返す
もし j < i ならば
「*」を出力する
j に 1 を加算する
continue で次の反復へスキップ
終了
もし j == i ならば
改行「\n」を出力する
j を 0 にリセットする
i に 1 を加算する
終了
ステップ3 → ループ終了
終了
プログラムのポイント
j < iの間は「*」を出力し、continueによってループの更新処理を飛ばして同じ反復内で処理を続けます。j == iになった時点で1行分の出力が完了したことを意味するため、改行を出力してjをリセットし、iを手動でインクリメントします。- このように、ネストしたループの役割を2つの変数の状態管理に置き換えるのが最大のポイントです。
サンプルコード
#include <stdio.h>
int main() {
int i, j = 0;
int n = 6;
for ( i = 1; i <= n; ) {
if( j < i ) {
printf("*");
j++;
continue;
}
if(j == i) {
printf("\n");
j = 0;
i++;
}
}
return 0;
}
実行結果
上記のプログラムをコンパイルして実行すると、以下のように段々と増えていく星型のパターンが出力されます。
* ** *** **** ***** ******
-
【C言語】六角形パターンを出力するプログラムの作成方法
本記事では、整数「n」が与えられたとき、その値をもとにアスタリスク(*)で構成された六角形パターンを生成し、画面に出力するC言語プログラムを解説します。ループと条件分岐を組み合わせることで、きれいな六角形の図形をテキストベースで描くことができます。 実行例 入力:n = 5 の場合の出力は以下のようになります。 入力:n = 4 の場合の出力は以下のようになります。 プログラムの基本的なアプローチ このプログラムでは、六角形パターンを以下の手順で作成しています。 ユーザーから整数「n」を入力として受け取ります。 パターン全体を「上部」「中央部」「下部」の3つの部分に分割して考えます。
-
ループを使わずに数列を出力するPythonプログラム|再帰とフラグで実現する方法
本記事では、for文やwhile文などのループ構文を一切使わずに数列を表示するという問題の解法について解説します。問題の定義問題: 2つの数値 N と K が与えられます。まずNが0より大きい間はNからKを繰り返し引き、Nが0以下(ゼロまたは負)になったら、今度は逆にKを足していきます。そして値が元の数値Nに戻った時点で処理を終了します。実行例N = 10K = 4出力: 10 6 2 -2 2 6 10アルゴリズムNが0より大きい間、関数を再帰的に呼び出し続けます。各呼び出しのたびにNからKを減算します。数値が0以下になったら加算モードに切り替え、各呼び出しごとにKを加算します。元の数値Nに