四则运算三c++ -(4)

2018-12-25 23:17

if (b.numerator == 0) //如果除的是0,则出现除法错误,返回 return true;

c.numerator = a.numerator * b.denominator; c.denominator = a.denominator * b.numerator; }

else //其他情况则出错 return true;

if (c.numerator != 0) //若结果不为0,则对分子分母约分 {

ll div = gcd(c.denominator, c.numerator); c.denominator /= div; c.numerator /= div; }

s.push(c); //将约分后结果入栈 } }

if (s.size() > 1) //如果所有操作符都进行相应操作数后栈内还有多个元素,则说明出错,返回 return true;

res = s.top(); //保存结果 s.pop();

if (res.denominator < 0) //化简结果,将分母的负号移到分子上 {

res.numerator = -res.numerator; res.denominator = -res.denominator; }

return false; }

bool trans_ans() { int i = 0; ll tmp = 0;

//两个标志位分别标志用户输入的分子分母是否为负数

bool num_flag = false, deno_flag = false; //先判断分子是否为负 if (ans[i] == '-') {

num_flag = true; i++; }

//接收第一个数字 while(isNum(ans[i])) {

tmp = tmp * 10 + (ans[i] - '0'); i++; }

//若第一个数为负数,则将转化过来的整数取负 if (num_flag) tmp = -tmp; //保存分子 rst.numerator = tmp; //分母赋初值为1 rst.denominator = 1; tmp = 0;

//判断是否是分数 if (ans[i] == '/') {

//判断分母是否为负数 if (ans[++i] == '-') {

deno_flag = true; i++; }

//接收第二个数 while(isNum(ans[i])) {

tmp = tmp * 10 + (ans[i] - '0');

i++; }

//若第二个数为负数,则将转化过来的整数取负 if (deno_flag) tmp = -tmp; //保存分母

rst.denominator = tmp; }

//若分母为0,则用户输入的结果是非法的 if (rst.denominator == 0) return true;

//若此时没有遍历所有的字符,则说明输入是非法的 if (i != strlen(ans)) return true;

//化简分母的负号,将其移至分子 if (rst.denominator < 0) {

rst.numerator = -rst.numerator; rst.denominator = -rst.denominator; }

//若用户输入的分子分母都是负数,则用户输入不符合规范,我们取分母为0(因为计算结果不可能出现分母为0的状况)标志这种情况的发生 if (num_flag && deno_flag) rst.denominator = 0; return false; } int main() {

fraction frac,frac2;

int sj1,sj2,sf=1,sj3,sj4,r,j=1;//定义随机数及算符 int above,below; int Num;//题的数量

int numchose;//运算数选择 char sfchose;//算符选择 char yschose;//余数选择 char jf;//减法结果选择 int qznum;//取值范围

int ans_2[length];//存放正确的答案 int ans_4[length]={0};//存放正确的余数

srand((unsigned)time(NULL)); //srand函数是以现在系统时间作为时间种子产生随机数

cout<<\欢迎使用自动出题系统*****\ cout<<\请对以下内容进行初始化设置:\

cout<<\请选择运算数(1.二个运算数 2.多个运算数)\ cin>>numchose; if(numchose==1) {

cout<<\请输入打印题数:\ cin>>Num;

cout<<\请选择是否有乘除法?(y/n)\ cin>>sfchose;

cout<<\请输入一个值确定算式中数值取值范围:\ cin>>qznum;

cout<<\减法结果中出现负数吗?(y/n)\ cin>>jf;

if(sfchose=='y') {

cout<<\请选择除法有无余数?(y/n)\ cin>>yschose; }

cout<<\

for(int i=0;i

sj1=rand()%qznum;

sj2=rand()%qznum; sj3=rand()%qznum; sj4=rand()%qznum; if(sfchose=='n')//无乘除法 {

sf=rand()%4; }

if(sfchose=='y')//有乘除法 {

sf=rand()%8; } switch(sf) { case 0:

cout<

break; case 1:

if(jf=='n')//无负数 {

if(sj1

cout<

cout<


四则运算三c++&nbsp;-(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2008-2015历年考研政治真题含答案解析&nbsp;-

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: