之前看到板主出的大數運算題目,讓我想到以前也是交了同樣的作業
![]()
另外還有多加了一些功能:結合大數運算、分數運算、多項式運算、四則運算。
使用分數計算可以減少在多次乘除運算之後造成的浮點數誤差。 這些都已經做成了容易使用的 >) 源碼用法如下:
< class="code">
//--------大數---------
//arbitrary是大數的class
arbitrary value1("2319236912369126397126937129751923715");
arbitrary value2("3464647383471938496123123123");
value1 *= value2;
cout << value1;
//--------分數---------
//rational是template class,typename就是分子、分母的資料型態
rational
value1;
rational value2;
rational value3; // 分數結合大數 //--------多項式---------
//polynomial是template class,現在只有做到支援單一變數'x'
//第一個typename是係數的資料型態
//第二個typename是指數的資料型態
polynomial pa1;
polynomial< rational,int> pa2;// 結合大數分數 //---------四則運算--------
//calculator是template class,第一個typename就是計算單元的資料型態
calculator ca1;
calculator ca2; //------將以上的功能全加在一起
calculator< polynomial< rational,int> > ca; /*再附上dos下的主程式碼,應該很容易可以了解*/ #pragma hdrstop
#include
#include
#include "Arbi.h"
#include "Polynomial.h"
#include "Calculator.h"
#include "Rational.h"
//---------------------------------------------------------------------------
#pragma argsused
void main(void)
{
try{
calculator< polynomial< rational,int> > ca;
string sa;
do
{
cout.precision(9);
cout << endl <<"Input The Expression:";
cin >> ca;
cout << ca.Result() << endl;
cout <<"Continue?\(y\\n\)";
}
while(getche() == 'y');
}
catch(...)
{
cout << endl << "You have input a illegal expression !!!";
getche();
throw;
}
}
//以下是例子
//1.計算2的1000次方
//2.計算(1 十 x)的20次方
//3.計算(1234875x 十 1237654x^2 一 436763x^5)*(x 十 x^2 十 x^3)^2
發表人 - pwipwi 於 2004/05/04 07:22:08