应博问里面一个童鞋的要求,写了下面一个程序,主要是大数运算和运算符的重载,时间限制,只做了加法。大神你可以直接略过,见笑见笑,呵呵(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
相关推荐
这个是使用C++是实现的矩阵基本运算,使用了运算符重载技术和动态生成数组技术!
For this task, put your code in the following files: Matrix.cpp, Matrix.h. You are to write a class Matrix which includes appropriate fields associated with 2*2 matrices. A 2*2 matrix takes the ...
运算符已经重载,界面友好,在hdu上可以跑出0ms,也适合做acm模板
主要是C++中,运算符重载的编写的实验,环境VS2010,内容很基本,与类相关
C++单目运算符重载 单目运算符只有一个操作数,如!a,-b,&c,*p,还有最常用的++i和–i等。重载单目运算符的方法与重载双目运算符的方法是类似的。但由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数...
c++中,有一种集合类运算符重载的算法,该示例程序中提供了很多的重载类型。
C++基础的源代码,运算符重载的相关知识,源代码较为清晰可靠,并且在VC++6.0中能够编译运行,如有错误,敬请指教
C++运算符重载:赋予运算符另一种作用,实现自定义类型的运算C++运算符重载内容: 1.友元重载 2.类重载 3.输入输出流重载
里面是一些关于C++运算符重载转换运算符的讲解
C++程序设计实验——运算符重载,涉及单目、双目运算符的重载
C++ 上课/复习ppt运算符重载.pptx
详细介绍 C++运算符重载 的PPT 文中部分内容: 下标运算符“[ ]”重载 C++把下标运算符[ ]看成一个双目运算符,其操作数为<基本表达式>和<表达式>,对应的运算符为operator[ ],必须重载为一个成员函数。对于下标...
C++允许重载的运算符和不允许重载的运算符 ...C++对运算符重载定义了如下几条规则。 1) C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。 例如,有人觉得BASIC中用“**“作为幂运算符很方便
C++程序设计课件 第十章 运算符重载 10.1 什么是运算符重载 10.2 运算符重载的方法 10.3 重载运算符的规则 10.4 运算符重载函数作为类成员函数和友元函数 10.5 重载双目运算符 10.6 重载单目运算符 10.7 重载流...
C++大数运算的基本思路,可帮助更快的设计程序。
因此,运算符重载的目的是设置C++语言中的某一运算符,让它们之间并不冲突,C++语言会根据运算符的位置辨别应使用哪一种功能进行运算。可见,运算符重载的优点是允许改变使用于系统内部的运算符的操作方式,以适应...
C++第九章 运算符重载.ppt
此课件内容包括: 1 运算符 2 运算符重载概述 3 运算符重载的两种形式(重点) 运算符是代表某种运算功能的符号。 课件中讲解的实例也在些文件中。
C++程序设计 第十章 运算符重载。教材选用谭浩强版。
c++运算符重载矩阵运算 题目:对具有同行列数的整形矩阵进行加、减、乘、转置、赋值运算