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

C++での2進化10進数の再帰プログラム


2進数を含む文字列が与えられます。目標は、再帰的な方法を使用して同等の10進数を見つけることです。

2進数は、次の方法を使用して10進数に変換できます-:LSBからMSBにトラバースし、それぞれに2 i の累乗を掛けます。 ここで、0 <=i<=noです。桁数とそれ以前のすべての結果。

このためのさまざまな入出力シナリオを見てみましょう-

入力 − binStr [] ="110010"

出力 −指定されたバイナリの等価10進数:50

説明 -110010を10進数に変換すると、数値は次のようになります。-

=0 * 2 0 + 1 * 2 1 + 0 * 2 2 + 0 * 2 3 + 1 * 2 4 + 1 * 2 5

=0 + 2 + 0 + 0 + 16 + 32

=50

入力 − binStr [] ="0011"

出力 −指定されたバイナリの等価10進数:3

説明 − 110010を10進数に変換すると、数値は次のようになります。-

=1 * 2 0 + 1 * 2 1 + 0 * 2 2 + 0 * 2 3

=1 + 2 + 0 + 0

=3

以下のプログラムで使用されているアプローチは次のとおりです

このアプローチでは、入力文字列とその長さを受け取り、文字ごとに10進数に変換して2 i を乗算する再帰関数bintoDecimal(strBin、length)を使用しています。 。以前の結果を追加します。

  • 2進数を含む入力文字列strBin[]を取得します。

  • strlen(strBin)を使用してその長さを計算します。

  • 関数bintoDecimal(strBin、length)は入力を受け取り、再帰的アプローチを使用して計算された数値を返します。

  • 最後にLSBの文字である場合は、同じになるので10進数を返します。 (1を掛けたもの、つまり2 0

  • それ以外の場合は、temp =binary[i]-'0'に設定します。その10進値。

  • 次に、tempに2 len-i-1 を掛けます。 temp<

  • temp =temp + bintoDecimal(binary、len、i + 1)を使用して、他の数字の結果をtempに追加します。

  • 再帰の終了時の戻り温度。

  • 計算された小数をメインに出力します。

#include<bits/stdc++.h>
using namespace std;
int bintoDecimal(char binary[],int len, int i=0){
   if (i == len-1)
   return (binary[i] - '0');

   int temp=binary[i]-'0';
   temp=temp<<len-i-1;
   temp=temp+bintoDecimal(binary,len,i+1);
   return (temp);
}
int main(){
   char strBin[] = "11010";
   int length=strlen(strBin);
   cout <<"Equivalent Decimal of given binary: "<<bintoDecimal(strBin,length) << endl;
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Equivalent Decimal of given binary: 26

  1. C++での2進数から10進数への変換プログラム

    2進数を入力として指定すると、タスクは指定された2進数を10進数に変換することです。 コンピューターの10進数は10進数で表され、2進数は2進数の0と1の2つしかないため、2進数で表されますが、10進数は0〜9から始まる任意の数値にすることができます。 2進数を10進数に変換するには、右から左に向かって残りの数字を抽出し、0から始まる2の累乗を掛けて、(桁数)–1まで1ずつ増やします。乗算された値を加算し続けて、最終的な10進数値を取得します。 以下に、2進数を10進数に変換する図を示します。 例 Input-: 1010    0 will be conver

  2. C++でのピラミッドのボリュームのプログラム

    ピラミッドのベースのタイプに応じて側面が与えられると、タスクはピラミッドの体積を計算することです。 ピラミッドは、ピラミッドの鋭いエッジを形成する共通点で外面が三角形で交わる3D図形です。ピラミッドの体積は、持つベースのタイプによって異なります。 -のように、ピラミッドを構成できるベースにはさまざまな種類があります。 三角形 -ピラミッドの体積よりも、ピラミッドの底辺が三角形になることを意味します 式-:( 1/6)* a * b * h 正方形 -ピラミッドの体積よりも、ピラミッドの底面が正方形になることを意味します 式-:(1/3)*(b ^ 2)* h 五角形 -ピラミッド