• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Theodore_fzy
博客园    首页    新随笔    联系   管理    订阅  订阅
关于整数和真分数的四则运算的算法,整数已通过,但真分数不能化到最简的问题求大神指导啊
#include "stdafx.h"




#include<iostream>
using namespace std;
void realfenshu(int m,int a[][2])
{
for(int p=0;p<m;p++)
{
int i=rand()%10;
int j=rand()%10+1;
if(j==0||i>j)
{
i=rand()%10;
j=(rand()-1)%10;
}
int x=rand()%10;
int y=rand()%10+1;
if(y==0||x>y)
{
x=rand()%10;
y=(rand()-1)%10;
}
int k=rand()%4;
switch(k)
{
case 0:
cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"=";
for(int n=0;n<100;n++)
{
if((i*y+x*j)==n*(y*j))
{
a[p][0]=(i*y+x*j);
a[p][1]=(y*j);
}
else
{
if((i*y+x*j)<(y*j))
{
for(int m=1;m<(i*y+x*j);m++)
{
if((i*y+x*j)%m==0&&(y*j)%m==0)
{
a[p][0]=(i*y+x*j)/m;
a[p][1]=(y*j)/m;
}
}
}
if((i*y+x*j)>(y*j))
{
for(int m=1;m<(y*j);m++)
{
if((i*y+x*j)%m==0&&(y*j)%m==0)
{
a[p][0]=(i*y+x*j)/m;
a[p][1]=(y*j)/m;
}
}
}
}
}
break;
case 1:
cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"=";
for(int n=0;n<100;n++)
{
if((i*y-x*j)==n*(y*j))
{
a[p][0]=(i*y-x*j);
a[p][1]=(y*j);
}
else
{
if((i*y-x*j)<(y*j)&&(i*y-x*j)>0)
{
for(int m=1;m<(i*y-x*j);m++)
{
if((i*y-x*j)%m==0&&(y*j)%m==0)
{
a[p][0]=(i*y-x*j)/m;
a[p][1]=(y*j)/m;
}
}
}
if((i*y-x*j)>(y*j))
{
for(int m=1;m<(y*j);m++)
{
if((i*y-x*j)%m==0&&(y*j)%m==0)
{
a[p][0]=(i*y-x*j)/m;
a[p][1]=(y*j)/m;
}
}
}
if((i*y-x*j)<(y*j)&&(i*y-x*j)<0)
{
for(int m=1;m<(-i*y+x*j);m++)
{
if((-i*y+x*j)%m==0&&(y*j)%m==0)
{
a[p][0]=(-i*y+x*j)/m;
a[p][1]=(y*j)/m;
}
}
}
}
}
break;
case 2:
cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<x<<"/"<<y<<")"<<"=";
for(int n=0;n<100;n++)
{
if((i*x)==n*(y*j))
{
a[p][0]=(i*x);
a[p][1]=(y*j);
}
else
{
if((i*x)<(y*j))
{
for(int m=1;m<(i*x);m++)
{
if((i*x)%m==0&&(y*j)%m==0)
{
a[p][0]=(i*x)/m;
a[p][1]=(y*j)/m;
}
}
}
if((i*x)>(y*j))
{
for(int m=1;m<(y*j);m++)
{
if((i*x)%m==0&&(y*j)%m==0)
{
a[p][0]=(i*x)/m;
a[p][1]=(y*j)/m;
}
}
}
}
}
break;
case 3:
            cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"=";
for(int n=0;n<100;n++)
{
if((i*y)==n*(x*j))
{
a[p][0]=(i*y);
a[p][1]=(x*j);
}
else
{
if((i*y)<(x*j))
{
for(int m=1;m<(i*y);m++)
{
if((i*y)%m==0&&(x*j)%m==0)
{
a[p][0]=(i*y)/m;
a[p][1]=(x*j)/m;
}
}
}
if((i*y)>(x*j))
{
for(int m=1;m<(x*j);m++)
{
if((i*y)%m==0&&(x*j)%m==0)
{
a[p][0]=(i*y)/m;
a[p][1]=(x*j)/m;
}
}
}
}
}


}
if(p%5==4)
{
cout<<endl;
}
else
{
cout<<'\t';
}
}
}
void DisplayFenshu(int a[][2],int w,int m)
{
    if(w==1)
    {
         for(int q=0;q<m;q++)
        {
            if(a[q][0]==0)
{
                cout<<"0"<<'\t';
}
if(a[q][0]!=0&&a[q][1]!=1)
{
cout<<a[q][0]<<"/"<<a[q][1]<<"\t";
}
if(a[q][0]!=0&&a[q][1]==1)
{
cout<<a[q][0]<<"\t";
}
            if(q%5==4)
            {
                cout<<endl;
            }
        }
    }
}


void zhengshu(int m,int x[][2])
{
for(int i=0;i<m;i++)
{
int a=rand()%10;
int b=rand()%10+1;
if(b==0)
{
a=rand()%10;
b=(rand()-1)%10;
}
int k=rand()%4;
switch(k)
{
case 0:
cout<<a<<"+"<<b<<"=";
x[i][0]=a+b;
x[i][1]=1;
break;
case 1:
cout<<a<<"-"<<b<<"=";
x[i][0]=a-b;
x[i][1]=1;
break;
case 2:
cout<<a<<"*"<<b<<"=";
x[i][0]=a*b;
x[i][1]=1;
break;
case 3:
            cout<<a<<"/"<<b<<"=";
for(int n=0;n<100;n++)
{
if(a==n*b)
{
x[i][0]=a/b;
x[i][1]=1;
}
else
{
if(a<b)
{
for(int m=1;m<a;m++)
{
if(a%m==0&&b%m==0)
{
x[i][0]=a/m;
x[i][1]=b/m;
}
}
}
if(a>b)
{
for(int m=1;m<b;m++)
{
if(a%m==0&&b%m==0)
{
x[i][0]=a/m;
x[i][1]=b/m;
}
}
}
}
}
}
if(i%5==4)
{
cout<<endl;
}
else
{
cout<<'\t';
}
}
}
void DisplayInt(int a[][2],int m,int n)
{
    if(m==1)
    {
         for(int q=0;q<n;q++)
        {
            if(a[q][0]==0)
{
                cout<<"0"<<'\t';
}
if(a[q][0]!=0&&a[q][1]!=1)
{
cout<<a[q][0]<<"/"<<a[q][1]<<"\t";
}
if(a[q][0]!=0&&a[q][1]==1)
{
cout<<a[q][0]<<"\t";
}
            if(q%5==4)
            {
                cout<<endl;
            }
        }
    }
    else
    {};
}


void main()
{
    int p;
    do
    {
        system("cls");
        int a[1000][2],b[1000][2];
        int m,n,w;
        cout<<"请输入生成的四则运算题个数:";
        cin>>m;
        cout<<endl;
        cout<<"请输入要生成的四则运算种类(输入1为整数,否则为真分数):";
        cin>>n;
        cout<<endl;
if(n==1)
        {
            zhengshu(m,a);
            cout<<endl;
        }
        else
        {
            realfenshu(m,b);
            cout<<endl;
        }
        cout<<"是否输出答案(输入1则输出答案否则不输出答案)"<<endl;
        cin>>w;
        if(n==1)
        {
            DisplayInt(a,w,m);        
        }
        else
        {
            DisplayFenshu(b,w,m);
        }
        cout<<endl;
        cout<<"是否继续生成运算题(输入1则生成否则不生成)"<<endl;
        cin>>p;
        cout<<endl;
    }while(1==p);


}
posted on 2016-03-25 16:12  Theodore_fzy  阅读(161)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3