| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 538 人关注过本帖
标题:请大家帮忙写个类
只看楼主 加入收藏
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:8 
请大家帮忙写个类
今天在C++的学习过程中突然碰到一个问题,就是求1000!,这个结果非常大,C++内置的数据类型无法存储这样大的数。于是我想到自己定义一个类,这个类可以用来保存整数,而且大小可以自定义。比如我定义这个类的大小是100个字节,那么100个字节就能存储下1000!这样大的数字了。但是我发现这个类对于我这样的C++初学者来说实现起来有点难度,请各位高人帮忙写出这个类。
搜索更多相关主题的帖子: 个类 
2010-11-19 16:41
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:4 

#include <iostream.h>
class Big
{
private:
    int a[100];
public:
    Big();
    ~Big();
    void Return(int n);
    void DisPlay();
    int fun(int n);
};
int  Big::fun(int n)
{
    int sum=1;
    for(int i=1;i<=n;i++)
        sum*=i;
    return sum;
}
Big::Big()
{
    for(int i=0;i<100;i++)
        a[i]=0;
}
Big::~Big()
{
    ;
}
void Big::Return(int n)
{
    int sum=1;
    int i=1;
    for(int j=0;j<100;j++)
    {
         for(;i<=n;i++)
        {
            sum*=i;
            if(sum>2000000)
            {
            a[j]=sum;
            break;
            }
        }
    }
}
void Big::DisPlay()
{
    for(int i=0;i<100;i++)
        cout<<a[i]<<endl;
}
int main()
{
    Big b;
    b.Return(50);
    b.DisPlay();
    cout<<b.fun(50);
    return 0;
}
把所得到的数保存到数组里面去  然后结果等于这些数的乘积

                                         
===========深入<----------------->浅出============
2010-11-19 17:38
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
收藏
得分:0 
我回去研究下。谢谢二楼的了。
2010-11-20 12:56
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
收藏
得分:0 
2楼的没弄明白我的意思。我是要写一个类,用这个类来保存一个非常大的整数。就是说把这个类看成是一种数据类型,只不过这种数据类型是我们自定义的,然后用这种我们自己定义的数据类型来保存一个非常大的整数。
2010-11-20 13:29
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
#include "stdio.h"
#include "iostream.h"

int main(int argc, char* argv[])
{
    int carry,n,j;
    int a[2000];
    int digit=1;
    int temp,i;
    cout<<"please enter n:"<<endl;
    cin>>n;
    a[0]=1;
    for(i=2; i<=n; i++)
    {
        for(carry=0,j=1; j<=digit; ++j)
        {
            temp=a[j-1]*i+carry;
            a[j-1]=temp%10;
            carry=temp/10;
        }
        while(carry)
        {
            //digit++;
            a[++digit-1]=carry%10;
            carry/=10;
        }
    }
    cout<<"the result is:"<<endl;
    for(int k=digit; k>=1; --k)
        cout<<a[k-1];
    cout<<endl;
    return 0;
}


                                         
===========深入<----------------->浅出============
2010-11-20 14:01
songhuirong1
Rank: 2
等 级:论坛游民
帖 子:116
专家分:38
注 册:2010-6-15
收藏
得分:0 
我回去研究下。
2010-11-22 08:49
cacker
该用户已被删除
收藏
得分:4 
提示: 作者被禁止或删除 内容自动屏蔽
2010-11-22 21:16
hoho568
Rank: 5Rank: 5
等 级:职业侠客
帖 子:101
专家分:378
注 册:2009-7-14
收藏
得分:4 
以下是引用laoyang103在2010-11-19 17:38:14的发言:


#include
class Big
{
private:
    int a[100];
public:
    Big();
    ~Big();
    void Return(int n);
    void DisPlay();
    int fun(int n);
};
int  Big::fun(int n)
{
    int sum=1;
    for(int i=1;i<=n;i++)
        sum*=i;
    return sum;
}
Big::Big()
{
    for(int i=0;i<100;i++)
        a=0;
}
Big::~Big()
{
    ;
}
void Big::Return(int n)
{
    int sum=1;
    int i=1;
    for(int j=0;j<100;j++)
    {
         for(;i<=n;i++)
        {
            sum*=i;
            if(sum>2000000)
            {
            a[j]=sum;
            break;
            }
        }
    }
}
void Big::DisPlay()
{
    for(int i=0;i<100;i++)
        cout<<
}
int main()
{
    Big b;
    b.Return(50);
    b.DisPlay();
    cout<
    return 0;
}
把所得到的数保存到数组里面去  然后结果等于这些数的乘积
能讲一下什么意思吗?Return函数一直没有看懂,谢谢!
2010-11-23 20:58
wxinonline
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2010-11-23
收藏
得分:4 
回复 8楼 hoho568
我也觉得第一层for是不是应该去掉,当 sam>20000000时,直接j++;
2010-11-23 22:17
快速回复:请大家帮忙写个类
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017424 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved