演算子

[C言語] 繰り返し処理で引き算を行う方法

C言語で繰り返し処理を用いて引き算を行うには、forループやwhileループを使用します。

例えば、forループを使って特定の数から1ずつ引いていく場合、初期値を設定し、条件式で終了条件を指定し、ループ内で引き算を行います。

whileループでも同様に、条件が満たされる限りループを続け、ループ内で引き算を実行します。

これにより、指定した回数や条件に基づいて繰り返し引き算を行うことができます。

繰り返し処理での引き算の実装

C言語における繰り返し処理は、特定の条件が満たされるまで同じ処理を繰り返すための重要な手法です。

ここでは、forループ、whileループ、do-whileループを使って引き算を行う方法を解説します。

forループを使った引き算

forループは、初期化、条件判定、更新処理を一行で記述できるため、繰り返し回数が明確な場合に便利です。

以下は、forループを使って10から1まで引き算を行う例です。

#include <stdio.h>
int main() {
    // 10から1まで引き算を行う
    for (int i = 10; i > 0; i--) {
        printf("%d\n", i);
    }
    return 0;
}
10
9
8
7
6
5
4
3
2
1

このプログラムは、変数iを10から1まで減少させながら、その値を出力します。

i--iを1ずつ減少させる操作です。

whileループを使った引き算

whileループは、条件が真である限り繰り返し処理を行います。

以下は、whileループを使って10から1まで引き算を行う例です。

#include <stdio.h>
int main() {
    int i = 10; // 初期化
    // iが0より大きい間、ループを続ける
    while (i > 0) {
        printf("%d\n", i);
        i--; // iを1ずつ減少
    }
    return 0;
}
10
9
8
7
6
5
4
3
2
1

このプログラムでは、iが0より大きい間、iを1ずつ減少させながらその値を出力します。

do-whileループを使った引き算

do-whileループは、少なくとも一度はループ内の処理を実行したい場合に使用します。

以下は、do-whileループを使って10から1まで引き算を行う例です。

#include <stdio.h>
int main() {
    int i = 10; // 初期化
    // 少なくとも一度はループを実行
    do {
        printf("%d\n", i);
        i--; // iを1ずつ減少
    } while (i > 0);
    return 0;
}
10
9
8
7
6
5
4
3
2
1

このプログラムは、doブロック内の処理を実行した後に条件を評価し、iが0より大きい間、ループを続けます。

応用例

繰り返し処理での引き算は、基本的な操作ですが、応用することでより複雑な処理を実現できます。

ここでは、ネストされたループ、条件付き引き算、再帰処理との組み合わせについて解説します。

ネストされたループでの引き算

ネストされたループを使用すると、二次元的な処理を行うことができます。

以下は、二重のforループを使って、二次元配列の各要素から引き算を行う例です。

#include <stdio.h>
int main() {
    int matrix[3][3] = {
        {10, 20, 30},
        {40, 50, 60},
        {70, 80, 90}
    };
    
    // 各要素から5を引く
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            matrix[i][j] -= 5;
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    return 0;
}
5 15 25 
35 45 55 
65 75 85

このプログラムは、3×3の二次元配列の各要素から5を引き、その結果を出力します。

ネストされたループを使うことで、行と列を簡単に操作できます。

条件付き引き算の実装

条件付き引き算では、特定の条件を満たす場合にのみ引き算を行います。

以下は、配列の要素が偶数の場合にのみ引き算を行う例です。

#include <stdio.h>
int main() {
    int numbers[] = {10, 15, 20, 25, 30};
    int size = sizeof(numbers) / sizeof(numbers[0]);
    
    // 偶数の場合のみ5を引く
    for (int i = 0; i < size; i++) {
        if (numbers[i] % 2 == 0) {
            numbers[i] -= 5;
        }
        printf("%d ", numbers[i]);
    }
    return 0;
}
5 15 15 25 25

このプログラムは、配列の各要素が偶数である場合にのみ5を引き、その結果を出力します。

条件付きで処理を行うことで、柔軟な操作が可能です。

再帰処理との組み合わせ

再帰処理を使うと、繰り返し処理を関数呼び出しで表現できます。

以下は、再帰を使って引き算を行う例です。

#include <stdio.h>
// 再帰関数で引き算を行う
void recursiveSubtract(int n) {
    if (n > 0) {
        printf("%d\n", n);
        recursiveSubtract(n - 1);
    }
}
int main() {
    recursiveSubtract(10);
    return 0;
}
10
9
8
7
6
5
4
3
2
1

このプログラムは、再帰関数recursiveSubtractを使って、10から1まで引き算を行います。

再帰処理は、ループと同様に繰り返し処理を実現しますが、関数呼び出しの形で表現されるため、特定の問題に対してより直感的な解法を提供することがあります。

まとめ

この記事では、C言語における繰り返し処理を用いた引き算の実装方法について詳しく解説しました。

forループ、whileループ、do-whileループを使った基本的な引き算の方法から、ネストされたループや条件付き引き算、再帰処理との組み合わせといった応用例までを紹介しました。

これらの知識を活用して、より効率的で柔軟なプログラムを作成してみてください。

関連記事

Back to top button