文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>【高精类】High_running V0.01

【高精类】High_running V0.01

时间:2010-08-22  来源:abcdabcd987

彷徨了两年,终于又回来了cnblogs。因为作为一个喜欢技术的人,把文章放在QQ空间现在容易被扁,又不想破费去买个虚拟主机,想来想去还是cnblogs好,皮也多,人也多,高手更多!加上我关注的除了嵌入式这边没有专门的分类外,其他的分类都很详细,所以以后就定居cnblogs。不知道等到我高中毕业这里会有多少篇随笔。

High_running这个类(名字随便起的,英文不好)主要实现高精度运算,基本任务就是整数加减乘除模,后面再加上浮点数的,再后面优化算法。其实做这个类的主要目的还是熟悉C++,毕竟我总不能拿着这个类去参加NOIP吧?

因为今天时间有限,仓促地编了这么一个开始,只支持+=操作,而且还没处理数组长度问题,还有异常处理等小问题。因为try...catch还没仔细看,所以等看完了再补上去,毕竟主要是为了学习。

高手请无视~!或者给我提提意见更好!

 

High_running.h
#ifndef _HIGH_RUNNING_H
#define _HIGH_RUNNING_H
#include
<iostream>
class High_running
{
public:
High_running():Data(NULL){}
High_running(
const size_t);
High_running(
const std::string, const size_t);
High_running
& operator+=(const High_running&);
private:
typedef signed
int high;
int MaxLength;
int Length;
high
* Data;
void _init();
friend std::istream
& operator>>(std::istream&, High_running&);
friend std::ostream
& operator<<(std::ostream&, const High_running&);
};
#endif

 

High_running.cpp
#include <iostream>
#include
<string>
#include
"High_running.h"

std::istream
& operator>>(std::istream& in,High_running& obj)
{
std::
string str;
in>>str;
obj.Length
=str.size();
obj._init();
for (size_t i=0;i!=str.size();++i)
obj.Data[i]
=str[obj.Length-i-1]-48;
return in;
}
std::ostream
& operator<<(std::ostream& out,const High_running& obj)
{
for (int i=0;i!=obj.Length;++i)
out<<(int)obj.Data[obj.Length-i-1];
return out;
}
void High_running::_init()
{
if (Data==NULL)
{
Data
=new high[MaxLength];
memset(Data,
0,sizeof(Data));
}
}
High_running::High_running(
const size_t max)
:Length(
0),MaxLength(max),Data(NULL)
{
_init();
}
High_running::High_running(
const std::string str, const size_t max=0)
:Length(str.size()),MaxLength(max
<=str.size()?str.size():max),Data(NULL)
{
_init();
for (size_t i=0;i!=str.size();++i)
Data[i]
=str[Length-i-1]-48;
}
High_running
& High_running::operator+=(const High_running& obj)
{
size_t end
= Length < obj.Length ? obj.Length : Length;
int x = 0;
for (size_t i=0;i!=end;++i)
{
x
= Data[i] + obj.Data[i] + x / 10;
Data[i]
= x % 10;
}
x
/= 10;
if (x > 0)
{
Data[Length]
=x;
++Length;
}
return *this;
}

 

#include <iostream>
#include
"High_running.h"
using namespace std;
int main()
{
High_running a(
256),b(256);
cin
>>a>>b;
a
+=b;
cout
<<a;
system(
"pause");
return 0;
}

 

相关阅读 更多 +
排行榜 更多 +
瓢虫少女

瓢虫少女

飞行射击 下载
潜艇鱼雷

潜艇鱼雷

飞行射击 下载
网络掠夺者

网络掠夺者

飞行射击 下载