hugeint.cpp

来自「压缩包里有教材<<C++模式设计-基于QT4开源跨平台开发框架&gt」· C++ 代码 · 共 61 行

CPP
61
字号
#include "hugeint.h"#include <iostream>HugeInt::HugeInt() : m_Size(0), m_DigitArray(0) {}HugeInt::HugeInt(long num) {    m_Size = 0;    set(num);}void HugeInt::set(long num) {    if (m_Size)         delete [] m_DigitArray;    m_Size = 0;    int num2 = num;    while (num2) {        ++m_Size;        num2 /= 10;    }    m_DigitArray = new int [m_Size];     for (int i = 0; i < m_Size; ++i) {        m_DigitArray[i] = num % 10;        num /= 10;    }}//startHugeInt::HugeInt(const HugeInt& hi) {    m_Size = hi.m_Size;    m_DigitArray = new int[m_Size];    for (int i = 0; i < m_Size; ++i)        m_DigitArray[i] = hi.m_DigitArray[i];}HugeInt::~HugeInt() {    delete [] m_DigitArray;}//endvoid HugeInt::show(bool newLine /*=false*/) const {    using namespace std;    for (int i = m_Size; i > 0; --i)        cout << m_DigitArray[i-1];    if (newLine)        cout << endl;}/* Here we assume that digits is an array of numerical digits,    each between 0 and 9, with a terminating null char. */void HugeInt::set(const char* digits) {    if (m_Size)         delete [] m_DigitArray;    for (m_Size = 0; digits[m_Size]; ++m_Size);    m_DigitArray = new int[m_Size];    for (int i = 0; i < m_Size; ++i) {        if ('0' > digits[i] || digits[i] > '9') {            //Design policy decision: What should we do here??        }        m_DigitArray[m_Size - i -1] = digits[i] - '0';    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?