C++
 Computer >> コンピューター >  >> プログラミング >> C++

スタックを使って10進数を2進数に変換するC++プログラムの解説

この記事では、スタック(stack)というデータ構造を使って、10進数を2進数に変換するC++プログラムを紹介します。

10進数を2進数に変換するには、対象の数値を2で割り続け、その余りを求める方法が一般的です。このとき、余りは計算順序とは逆の順番(最後に求めた桁が先頭)で並べる必要があります。スタックは「後入れ先出し(LIFO: Last In, First Out)」の性質を持つため、余りを順番に格納していけば、取り出す際に自動的に正しい桁順になります。まさにこの問題に適したデータ構造といえるでしょう。

入力:10進数 13
出力:2進数 1101

アルゴリズム

変換の手順は以下の通りです。

ステップ1:10進数の数値を入力する
ステップ2:数値が0より大きい間、以下を繰り返す
ステップ2.1:数値を2で割った余りをスタックにプッシュする
ステップ2.2:数値を「数値 ÷ 2」の結果で更新する
ステップ3:スタックから要素をポップしながら出力すると、2進数が完成する

サンプルコード

#include<iostream>
#include<stack>
using namespace std;

void dec_to_bin(int number) {
    stack<int> stk;
    while(number > 0) {
        int rem = number % 2; // 2で割った余りを求める
        number = number / 2;
        stk.push(rem);
    }
    while(!stk.empty()) {
        int item;
        item = stk.top();
        stk.pop();
        cout << item;
    }
}

int main() {
    int num;
    cout << "Enter a number: ";
    cin >> num;
    dec_to_bin(num);
    return 0;
}

コードのポイント

  • 関数dec_to_bin内では、まずstack<int>を宣言し、数値が0になるまで2での除算と余りのプッシュを繰り返します。
  • すべての余りをスタックに積んだ後、top()で先頭要素を取得し、pop()で取り出しながら出力します。これにより、桁が上から順に表示されます。

実行結果

Enter a number: 18
10010

このように、18を入力すると2進数の「10010」が出力されます。スタックを利用することで、余りを逆順に並べ替える処理を簡潔に実装できるのが大きな利点です。

  1. Pythonで10進数を2進数に変換する方法|再帰処理とbin()関数の実装例

    この記事では、「10進数を2進数に変換する」という問題に対する解決策を、具体的なコード例とともにわかりやすく解説します。 問題の概要 問題: 与えられた10進数の整数を、それに対応する2進数表現へ変換する。 この問題を解くには、大きく分けて2つのアプローチがあります。順番に見ていきましょう。 方法1:再帰を使った実装 10進数を2進数に変換する基本的な考え方は、「数値を2で割り続け、その余りを記録する」ことです。再帰関数を使うと、除算を繰り返しながら余りを自動的に上位の桁から順に出力できます。 サンプルコード def DecimalToBinary(num): if num &g

  2. Pythonで10進数を2進数に変換する方法|再帰と組み込み関数の2つのアプローチ

    この記事では、10進数で表された数値を2進数に変換するPythonプログラムについて、その考え方と具体的な実装方法をわかりやすく解説します。 問題文 ある整数が与えられたとき、その数値を2進数に変換します。例えば、10進数の「35」は2進数では「100011」と表現されます。 アプローチ1:再帰を使った解法 再帰処理を利用すると、シンプルなコードで10進数を2進数に変換できます。基本的な流れは以下の擬似コードのとおりです。 DecToBin(num):     if num > 1:      &n