1

私の問題は、巨大な数を合計する方法がわからないことです(「172839023498234792834798237494」または「-172839023498234792834798237494」など)。そこでchar* m_value、この種のオブジェクトを保管する場所を作りました。今私がやりたいことは、いくつかの基本的な算術演算を行うことです。最初に変換するか、のようなものを使用する必要がありますかitoa? 私の場合、数値を格納するための char* 以外のオプションはありません。

メイン.cpp

int main(int argc, char *argv[])
{
    LargeNumber l1;
    LargeNumber l3("172839023498234792834798237494"); 
    LargeNumber l7("-172839023498234792834798237494"); 

    l1 = l3 + l7;  //How to do it ?

    return 0;
}

LargeNumber.h

class LargeNumber{

      public:
      LargeNumber(char* value):m_value(value)
      {}

      LargeNumber operator+(const LargeNumber&);
      private:
      char* m_value;
}

LargeNumber.cpp

LargeNumber LargeNumber ::operator+(const LargeNumber &b)
{
        return LargeNumber ( ... );  //Sum both LargeNumber ???
}
4

3 に答える 3

4

多数の算術ライブラリを使用する必要があります。GMPは適切なオプションです。プロセッサは、このサイズの数値に対してネイティブに演算を実行することはできないため、これらのライブラリは、ソフトウェアですべての古い学校の計算を処理します。

于 2012-05-23T17:48:52.623 に答える
3

まったく再発明しないでください。BigInteger ライブラリを使用する必要があります

とにかく、C 文字列はそれを行うための最良の方法ではありません。

于 2012-05-23T17:50:13.953 に答える
1

文字列を使用する代わりに、int (または long) の配列として使用します。オペレーターのアルゴリズムは、手作業で行うものとほぼ同じです。

于 2012-05-23T17:51:49.103 に答える