回 帖 发 新 帖 刷新版面

主题:问下下面的程序哪里错了?想写的是大整数类

//HugeInteger.h

#ifndef HUGEINTEGER_H
#define HUGEINTEGER_H

class HugeInteger
{
public:
    HugeInteger(int);
    void input(int);
    void output();
    void add(HugeInteger);
    void multiply(HugeInteger);

    bool isEqualTo(HugeInteger);
private:
    int array[40];
};

#endif
//HugeInteger.cpp

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

#include <cmath>
#include "HugeInteger.h"

HugeInteger::HugeInteger(int numb)
{
    input(numb);
}
HugeInteger::input(int number)
{
    for (int t=0;number/(pow(10,t))!=0;t++)
        array[39-t]=number/(pow(10,t));
}
HugeInteger::output()
{
    for (int k=0;k!=40;t++)
        if (array[k]!=0)
            cout<<array[k];
}
HugeInteger::add(HugeInteger biginteger)
{
    for (int j=39;j!=-1;j--)
    {
        array[j]=array[j]+biginteger.array[j];
        if (array[j] > 10)
        {
            array[j-1]++;
            array[j]=array[j]-10;
        }
    }
}
HugeInteger::multiply(HugeInteger bignum)
{
    int hold[40]={0};
    for (int p=39;p!=-1;p--)
    {    for (int r=39;r!=-1;r--)
        {
            hold[r-(39-p)]=hold[r-(39-p)]+array[p]*bignum.array[r];
            if (hold[r]>10)
            {
                hold[r-1]=hold[r-1]+hold[r]/10;
                hold[r]=hold[r]%10;
            }
        }
    }
    for (int q=0;q!=40;q++)
        array[q]=hold[q];
}
HugeInteger::isEqualTo(HugeInteger b)
{
    for (int w=0;w!=40;w++)
    {
        if (array[w]!=b.array[w])
            return 0;
    }
    return true;
}






            



//fig_findthenumber.cpp

#include "HugeInteger.h"

int main()
{
    HugeInteger one(1);
    HugeInteger d(1000);
    for(HugeInteger c(-1000);c.isEqualTo (d);c.add(one))
    {
        for (HugeInteger b(-1000);b.isEqualTo (d);b.add(one))
        {
            for (HugeInteger a(-1000);a.isEqualTo (d);a.add(one))
            {
                static HugeInteger a2=a;
                static HugeInteger b2=b;
                static HugeInteger c2=c;
                a2.multiply(a);
                a2.multiply(a);
                b2.multiply(b);
                b2.multiply(b);
                c2.multiply(c);
                c2.multiply(c);
                a2.add (b2);
                if (a.isEqualTo (c2))
                {
                    a.output ();
                    b.output ();
                    c.output ();
                }
                a2=a;
                b2=b;
                c2=c;
            }
        }
    }
    
    return 0;
}
--------------------Configuration: 有理数 - Win32 Debug--------------------
Compiling...
HugeInteger.cpp
d:\cpp\有理数\hugeinteger.cpp(16) : error C2556: 'int __thiscall HugeInteger::input(int)' : overloaded function differs only by return type from 'void __thiscall HugeInteger::input(int)'
        d:\cpp\有理数\hugeinteger.h(10) : see declaration of 'input'
d:\cpp\有理数\hugeinteger.cpp(16) : error C2371: 'input' : redefinition; different basic types
        d:\cpp\有理数\hugeinteger.h(10) : see declaration of 'input'
d:\cpp\有理数\hugeinteger.cpp(21) : error C2556: 'int __thiscall HugeInteger::output(void)' : overloaded function differs only by return type from 'void __thiscall HugeInteger::output(void)'
        d:\cpp\有理数\hugeinteger.h(11) : see declaration of 'output'
d:\cpp\有理数\hugeinteger.cpp(21) : error C2371: 'output' : redefinition; different basic types
        d:\cpp\有理数\hugeinteger.h(11) : see declaration of 'output'
d:\cpp\有理数\hugeinteger.cpp(22) : error C2065: 't' : undeclared identifier
d:\cpp\有理数\hugeinteger.cpp(27) : error C2556: 'int __thiscall HugeInteger::add(class HugeInteger)' : overloaded function differs only by return type from 'void __thiscall HugeInteger::add(class HugeInteger)'
        d:\cpp\有理数\hugeinteger.h(12) : see declaration of 'add'
d:\cpp\有理数\hugeinteger.cpp(27) : error C2371: 'add' : redefinition; different basic types
        d:\cpp\有理数\hugeinteger.h(12) : see declaration of 'add'
d:\cpp\有理数\hugeinteger.cpp(39) : error C2556: 'int __thiscall HugeInteger::multiply(class HugeInteger)' : overloaded function differs only by return type from 'void __thiscall HugeInteger::multiply(class HugeInteger)'
        d:\cpp\有理数\hugeinteger.h(13) : see declaration of 'multiply'
d:\cpp\有理数\hugeinteger.cpp(39) : error C2371: 'multiply' : redefinition; different basic types
        d:\cpp\有理数\hugeinteger.h(13) : see declaration of 'multiply'
d:\cpp\有理数\hugeinteger.cpp(56) : error C2556: 'int __thiscall HugeInteger::isEqualTo(class HugeInteger)' : overloaded function differs only by return type from 'bool __thiscall HugeInteger::isEqualTo(class HugeInteger)'
        d:\cpp\有理数\hugeinteger.h(15) : see declaration of 'isEqualTo'
d:\cpp\有理数\hugeinteger.cpp(56) : error C2371: 'isEqualTo' : redefinition; different basic types
        d:\cpp\有理数\hugeinteger.h(15) : see declaration of 'isEqualTo'
fig_findthenumber.cpp
Error executing cl.exe.

有理数.exe - 11 error(s), 0 warning(s)

回复列表 (共4个回复)

沙发

上面 void add(HugeInteger);
下面应该void HugeInteger::add(HugeInteger &biginteger)
同理其他。
for (int k=0;k!=40;t++)     t++?   k++吧
void HugeInteger::multiply(HugeInteger &bignum)
还有算法问题我就不看 了   多看看书哈   我也一样 看书看过来的  
做做题目看看书。   巩固一下就好了

板凳

你好.我是全职网赚工作者.
如果你有时间有电脑.
想在网络上创业.请联系我..
项目绝对真实.详情QQ空间资料
加盟请联系摩客元亨 QQ908889846
2010年,中国网民突破了4亿,
网络游戏玩家超过了3亿,
互联网即将进入全民网游的时代

3 楼

这是一个互助的模式。
不推广人也有钱赚的。分A B两个网。
不推广的人在A网。推广的人 在B网。
B网推广的人帮助A网。
A网拿6000元出局。
B网就多了。
C易特元亨QQ919169870
奖励制度 
C易特更多资料C易特元亨QQ919169870
http://blog.sina.com.cn/cyite6
C易特奖励制度
http://blog.sina.com.cn/s/blog_6b2561440100l5r8.html

4 楼

寻找中国的最优秀的网商领袖精英 淘宝商盟元亨 qq: 908889846 
当今世界正经历着全球经济一体化的大潮,中国本土企业也因此面临着前所未有的机遇与挑战。
在这场洗礼中,哪些互联网平台有能力成为世界级的电子商务平台?网商精英要怎样做,才能最终成长为世界级网商精英领袖?
淘宝商盟平台震撼登场,携手淘宝30万商家联盟购物商城。
平台刚刚启动,互联网的网商精英请咨询qq: 908889846 
占领市场第一先机,合力打造网商系统!
淘宝商盟官网   www.taobaosm.com
 http://blog.sina.com.cn/tbsm8
淘宝商盟奖励制度

我来回复

您尚未登录,请登录后再回复。点此登录或注册