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

C ++でのatoi()の再帰的実装


数字を含む文字列が与えられます。目標は、再帰的なatoi()メソッドを使用して同等の数を見つけることです。 int atoi(con​​st char * str)は、文字列引数strを整数(int型)に変換します。

例-:

入力 − str [] ="58325"

出力 −同等の小数は:58325

説明 −文字列には同等の番号58325が含まれています

入力 − str [] ="00010"

出力 −同等の小数は:1

説明 −文字列には同等の数10が含まれています。

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

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

  • 数値を含む入力文字列Str[]を取得します。

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

  • 関数recurAtoi(char * str、int len)は入力を受け取り、再帰的なatoi()機能を使用して計算された数値を返します。

  • 長さが1桁の場合、* str -’0’を返します。

  • temp =10 * recurAtoi(str、len-1)を取得します。

  • そして、temp =temp +str[len-1]-'0'を設定します。

  • 最後に戻り温度。

  • 結果を印刷します。

#include <bits/stdc++.h>
using namespace std;
int recurAtoi(char *str, int len){
   if (len == 1){
      return *str - '0';
   }
   int temp=10*recurAtoi(str,len-1);
   temp=temp+str[len-1]-'0';
   return (temp);
}
int main(void){
   char Str[] = "58325";
   int length = strlen(Str);
   cout<<"Equivalent decimal :"<<recurAtoi(Str, length);
   return 0;
}

出力

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

Equivalent decimal : 58325

  1. C++でのラインリフレクション

    2D平面上にn個の点があるとすると、指定された点を対称的に反射するy軸に平行な線があるかどうかを確認する必要があります。つまり、指定された線上にすべての点を反映した後に線が存在するかどうかを確認する必要があります。元のポイントのセットは、反映されたポイントと同じです。 したがって、入力がpoints =[[1,1]、[-1,1]]のような場合 その場合、出力はtrueになります これを解決するには、次の手順に従います- 1つのセットを定義します。 n:=ポイントのサイズ minVal:=inf maxVal:=-inf 初期化i:=0の場合、i <

  2. C++でのstatic_cast

    static_castは、通常/通常の型変換に使用されます。これは、暗黙的な型強制の原因となるキャストでもあり、明示的に呼び出すこともできます。 floatをintに、charをintに変換する場合などに使用する必要があります。これにより、関連する型クラスをキャストできます。 例 #include <iostream> using namespace std; int main() {    float x = 4.26;    int y = x; // C like cast    int z = static_cas