C言語でスタックで進数変換を行う方法

C言語では、スタックを利用して進数変換を実現することができます。

最初に、スタックを作成し、空にします。

その後、変換する十進数を目的の進数で割り続け、その余りを順にスタックに積んでいく。商が0になるまで繰り返す。

最後に、スタックの要素を順番にポップすることで、変換後の結果を得ることができます。

10 進数を 2 進数に変換するためにスタックを使用したサンプルプログラムを以下に示します。

#include <stdio.h>
#define MAX_SIZE 100

int stack[MAX_SIZE];
int top = -1;

void push(int item) {
    if (top >= MAX_SIZE - 1) {
        printf("Stack Overflow\n");
        return;
    }
    stack[++top] = item;
}

int pop() {
    if (top < 0) {
        printf("Stack Underflow\n");
        return -1;
    }
    return stack[top--];
}

void convertToBinary(int num) {
    while (num > 0) {
        push(num % 2);
        num /= 2;
    }
    
    printf("Binary representation: ");
    while (top >= 0) {
        printf("%d", pop());
    }
    printf("\n");
}

int main() {
    int decimalNum;
    printf("Enter a decimal number: ");
    scanf("%d", &decimalNum);
    convertToBinary(decimalNum);
    return 0;
}

プログラムを実行した後、10 進数の数字を入力すると、プログラムは対応する 2 進数表記を出力します。

注意、このプログラムは例示プログラムであるので、他の進数変換に応用する場合は必要に応じて修正して下さい。

bannerAds