關於整數和真分數的四則運算的算法,整數已通過,但真分數不能化到最簡的問題求大神指導啊
#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);
}
#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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.