首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于一个随机产生四则运算式子的有关问题

2012-02-11 
关于一个随机产生四则运算式子的问题。C/C++ codestring randomExcs(){string expression(9, )//随机产

关于一个随机产生四则运算式子的问题。

C/C++ code
string randomExcs(){    string expression(9,' ');//随机产生表达式长度最大为9    int left=2;//随机产生左括号位置,最大下标4    int right=left+4;    expression[left]='(';    expression[right]=')';    expression[(left+right)/2]=getOp(false);    expression[left+1]=getOd(false);    bool preIsDiv=expression[(left+right)/2]=='/'?true:false;    expression[right-1]=getOd(preIsDiv);    string inner(expression,left,right);//子串,括号内容    bool innerIsZero=FunOpes(inner)==0?true:false;//FunOpes计算string表示的式子,返回计算结果    expression[left-1]=getOp(innerIsZero);    expression[0]=getOd(false);    expression[1]=getOp(innerIsZero);    expression[7]=getOp(innerIsZero);    preIsDiv=expression[7]=='/'?true:false;    expression[8]=getOd(preIsDiv);    return expression;}char getOp(bool innerIsZero){    char ops[]={'+','-','*','/'};    return innerIsZero?ops[rand()%3]:ops[rand()%4];//判定括号内数字是否为0,为零则左括号前符号不能为除号}char getOd(bool preIsDiv){    char ods[]={'1','2','3','4','5','6','7','8','9','0'};    return preIsDiv?ods[rand()%9]:ods[rand()%10];}void buildExLib(){    fstream outLib("out.txt",ofstream::out);    for(int i=1;i<10;i++)    {        srand((unsigned)time(NULL));        outLib<<randomExcs()<<"\n";    }}

1.在buildExLib里面每次产生并输出到out.txt的式子为什么是一样的?
2.如何让式子产生的更自然一些(比如四中运算均匀的出现,不要再一个式子里面只出现一种)

[解决办法]
值得多学习一下,谢谢了~

热点排行