| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1079 人关注过本帖
标题:请教高手这个数学计算程序该如何编写
只看楼主 加入收藏
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:0 
运算符 可以使用enum类型 然后随机输出...


  • 满眼生机转化钧;天工人巧日争新。
2010-06-02 13:24
liuyingmei
Rank: 1
来 自:广东东莞
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-23
收藏
得分:0 
太谢谢啦! 四个数是自己手动输入的。
2010-06-02 19:24
ciweitou163
Rank: 7Rank: 7Rank: 7
来 自:河北 石家庄
等 级:黑侠
威 望:1
帖 子:144
专家分:528
注 册:2008-10-4
收藏
得分:0 
自己写了一个,不过这里的“/”不是除法运算 而是 取整 ,要除法的话,自己改改就行。
程序代码:
#include<iostream>
using namespace std;

void display(char a[]);
int Result(char a[]);

char Sign[4]={'+','-','*','/'};

int main(void)
{
    int i=4;
    int result;
    char a[4];
    char b[7];
    cout<<"请输入4小于10个正整数"<<endl;
    while(i--)    
        cin>>a[i];
    int n=7;
    while(n--)
    {
        for(int i=0;i<7;i+=2)            //生成随机多项式
        {
            b[i]=a[rand()%4];
            if(i<5)
                b[i+1]=Sign[rand()%4];
        }
        display( b);
        result=Result( b);
        cout<<"结果="<<result<<endl;
    }
    return 0;
}

void display(char a[])        //显示多项式
{
    cout<<a;
}

int Result(char a[])
{
    int b[7];
    int result;
    int count=7;
    while(count--)
    {
        if((int)a[count]>=48)                //只传递操作数 不传递 操作符
        {
            b[count]=(int)a[count]-48;
        }else
            b[count]=6562;                    //9^4=6561    在运算中不可能出现 所以设置为标志位
    }    
    for(int i=1;i<6;i+=2)                //求程序中的乘除法运算
    {
        if(a[i]=='*'||a[i]=='/')
        {
            if(a[i]=='*')
            {
                if(b[i-1]!=6562)                    
                {
                    b[i-1]=b[i-1]*b[i+1];
                    b[i+1]=6562;
                }else if(b[i-3]!=6562)
                {
                    b[i-3]=b[i-3]*b[i+1];
                    b[i+1]=6562;
                }else
                {
                    b[i-5]=b[i-5]*b[i+1];
                    b[i+1]=6562;
                }
            }
            if(a[i]=='/')
            {
                if(b[i-1]!=6562)
                {
                    b[i-1]=b[i-1]/b[i+1];
                    b[i+1]=6562;
                }else if(b[i-3]!=6562)
                {
                    b[i-3]=b[i-3]/b[i+1];
                    b[i+1]=6562;
                }else
                {
                    b[i-5]=b[i-5]/b[i+1];
                    b[i+1]=6562;
                }
            }
        }
    }
    for(int i=1;i<6;i+=2)                //求程序中的加减法运算
    {
        if(a[i]=='+'||a[i]=='-')
        {
            if(a[i]=='+')
            {
                if(b[i-1]!=6562)
                {
                    b[i-1]=b[i-1]+b[i+1];
                    b[i+1]=6562;
                }else if(b[i-3]!=6562)
                {
                    b[i-3]=b[i-3]+b[i+1];
                    b[i+1]=6562;
                }else
                {
                    b[i-5]=b[i-5]+b[i+1];
                    b[i+1]=6562;
                }
            }
            if(a[i]=='-')
            {
                if(b[i-1]!=6562)
                {
                    b[i-1]=b[i-1]-b[i+1];
                    b[i+1]=6562;
                }else if(b[i-3]!=6562)
                {
                    b[i-3]=b[i-3]-b[i+1];
                    b[i+1]=6562;
                }else
                {
                    b[i-5]=b[i-5]-b[i+1];
                    b[i+1]=6562;
                }
            }
        }
    }
    int n=7;
    while(n--)
    {
        if(b[n]!=6562)
        {
            result=b[n];
            break;
        }
    }
    return result;
}

附上程序结果截图:
图片附件: 游客没有浏览图片的权限,请 登录注册
收到的鲜花
  • liuyingmei2010-06-03 18:42 送鲜花  3朵   附言:我很赞同; 但结果是0的正整数, 我是不是 ...


  • 满眼生机转化钧;天工人巧日争新。
2010-06-03 13:19
liuyingmei
Rank: 1
来 自:广东东莞
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-23
收藏
得分:0 
回复 13楼 ciweitou163
太谢谢啦!!!!!  送你鲜花 !!!!及礼品先!
2010-06-03 16:27
xin310923
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:203
专家分:325
注 册:2009-12-22
收藏
得分:0 
还是不明白
2010-06-03 20:23
liuyingmei
Rank: 1
来 自:广东东莞
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-5-23
收藏
得分:0 
回复 13楼 ciweitou163
ciweitou大师,结果出来的7个数字是要不能重复1~36之间的整数。 恳求你再改改程序吧! 谢谢! 请饮先。
2010-06-03 23:13
快速回复:请教高手这个数学计算程序该如何编写
数据加载中...
 
   



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

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