应博问里面一个童鞋的要求,写了下面一个程序,主要是大数运算和运算符的重载,时间限制,只做了加法。大神你可以直接略过,见笑见笑,呵呵(PS:写博客的时候怎么插入表情?)。
废话不多说,程序如下。
#include <iostream> #include <cstring> using namespace std; class BigNum { private: char *num; int length; public : BigNum(); BigNum(const char *); BigNum(const BigNum & bigNum); int print(); BigNum operator + (BigNum); BigNum & operator =(BigNum); }; BigNum & BigNum::operator = (BigNum bigNum) { this->length=bigNum.length; delete this->num; this->num=new char[this->length+1]; for(int i=0;i<this->length;i++) { this->num[i]=bigNum.num[i]; } this->num[length]='\0'; return *this; } BigNum::BigNum() { this->length=0; } BigNum::BigNum(const char *bigNum) { this->length=strlen(bigNum); num=new char[length+1]; for(int i=0;i<length;i++) { this->num[i]=bigNum[length-1-i]; } } BigNum::BigNum(const BigNum & bigNum) { this->length=bigNum.length; this->num=new char[this->length+1]; for(int i=0;i<this->length;i++) { this->num[i]=bigNum.num[i]; } this->num[length]='\0'; } int BigNum::print() { for(int i=length-1;i>=0;i--) cout<<this->num[i]; return this->length; } BigNum BigNum::operator + (BigNum bigNum) { char * a; int length=max(this->length,bigNum.length); a=new char[length+2]; int car=0; int i; for(i=0;i<length||car!=0;i++) { car=this->num[i]-'0'+bigNum.num[i]-'0'+car; a[i]=car%10+'0'; car/=10; } a[i]='\0'; delete this->num; this->num=a; return *this; } int main() { BigNum bigNum_1("123456"); BigNum bigNum_2(bigNum_1); bigNum_1.print(); cout<<endl; bigNum_2.print(); cout<<endl; bigNum_1=bigNum_2+bigNum_1; bigNum_1.print(); return 0; }
转载请注明原文地址:http://uwind.iteye.com/blog/1926471
相关推荐
运算符已经重载,界面友好,在hdu上可以跑出0ms,也适合做acm模板
为了支持大数运算,需要重载常见的数学运算符,如赋值(=)、加(+), 减(-), 乘(*), 除(/), 递增(++)和递减(--), 以及取余(%). 特别地,除法(/)运算返回商,余数丢失;而除以等于(/=)返回余数,商存储在左操作数中。...
本篇将围绕标题"**C++大数运算源代码**"和描述中的内容,深入探讨如何在C++中实现大数运算。 首先,我们关注到压缩包内的两个文件:`杨闽-C语言大数预算程序.cpp`和`HugeInt.h`。`HugeInt.h`很可能是一个头文件,...
设计一个“大数类”(LargeNumber),使它支持对任意大整数的输入、输出...2. 重载基本运算符,使其能够实现“大数”与“大数”,“大数”与双精度数之间的基本运算。 3. 给大数引进“正负号”,使其支持正负数的运算。
用于运算、输出大整数的C++库,使用简便,即下即用,已重载各类运算符,支持ostream(cout)输出和字符串输出、字符串构造、最大公约数和最小公倍数计算。 具体用法、函数说明可以在文件夹中的README.txt中找到
大数运算模板(C++) 大数运算模板是一个C++语言实现的大数运算库,用于处理大数的四则运算、平方根、求末尾0个数、求长度等操作。该模板只能处理正数的大数,包括int型的组合排列。下面是该模板的一些使用方法和...
运算符重载是C++中的一种重要特性,它允许我们为已有的运算符赋予新的含义,使其能适用于自定义的数据类型,如这里的复数类和大数类。 首先,复数类`Complex`被设计用来表示数学中的复数。它包含两个私有成员变量`...
总之,大数运算的实现是一项涉及数据结构设计、运算符重载和高效算法的重要任务,尤其是在密码学应用中。C++提供的面向对象特性使其成为实现此类功能的理想选择。通过自行设计位长度和重载基本运算符,我们可以创建...
标题中的"大数运算的类"指的是C++中用于处理大数的自定义数据结构或第三方库。这种类通常会实现整数的动态存储和各种算术操作,如加法、减法、乘法和除法。描述中提到的"C++中大数运算的类"更进一步地明确了我们讨论...
在C++中,可以通过重载运算符和实现自定义的整数类来实现大数类。 在这个示例代码中,我们定义了一个名为`Integer`的类,重载了所有基本的运算符,如`+`、`-`、`*`、`/`、`%`等,以及比较运算符`>`、`、`==`、`!=`...
4. **运算符重载**:为了使大数类的使用更直观,我们通常会重载各种运算符,如`+`、`-`、`*`、`/`等。这涉及到在大数类内部实现这些运算的逻辑。 5. **大数比较**:在大数计算中,还需要实现比较操作(如`>`、`、`=...
总结起来,“基于VC++的大数运算”涉及的主要知识点包括:大数表示(字符串或自定义数据结构)、大数的加、减、乘、除算法实现、类的设计与操作符重载、内存管理和测试策略。这些知识对于深入理解和应用C++编程,...
总结来说,C++大数模板是一种高效且灵活的工具,通过运算符重载和自定义数据结构,实现了大整数的高效计算。它不仅简化了大数操作的代码,还提高了代码的可读性和可维护性。理解和掌握大数模板的实现原理及使用方法...
虽然简略,但这种模板足够处理大部分日常的大数运算需求。 接下来是“高精度(加强版)”。加强版通常会包含更多高级功能和优化,如更高效的算法、错误检查、内存管理等。例如,它可能使用了更复杂的多精度乘法算法...
大数运算的效率可以通过优化算法,如使用Karatsuba算法或Toom-Cook算法来提高。这些算法可以减少大数乘法或加法的计算复杂度,从而在处理非常大的数字时提高性能。 总的来说,实现MFC中的大数相加需要设计一个...
在C++的学习过程中,第9天的课程涵盖了多个核心概念,包括输入/输出(I/O)、类的成员函数、运算符重载、数组操作以及复杂数据类型的实现。这些知识点是C++编程的基础,对于初学者来说至关重要。让我们逐一探讨这些...
用C++写的大数类,重载了+ - * / += -= *= /= =等运算符
该课程设计展示了如何在C++中设计和实现一个带符号大整数的计算器,涉及类的设计、运算符重载以及基本的输入输出处理。通过这个项目,学生不仅可以加深对C++语言的理解,还能掌握处理大整数的技巧,这对于未来的软件...
8. **输入输出**:为了方便用户与大数进行交互,需要实现大数的输入和输出功能,这通常通过重载`和`>>`运算符来实现。 总的来说,“大树各种运算”项目是C++中实现大数运算的一个实例,它涵盖了大数的存储、基本...
总的来说,这个`C++高精度代码`示例旨在提供一个易于使用且功能完善的高精度计算框架,通过重载操作符使得用户可以像使用普通整数一样进行大数运算。学习这个代码可以帮助开发者深入理解C++的类设计、操作符重载以及...