C++實現(xiàn)分數(shù)計算器
分數(shù)計算器項目設計,供大家參考,具體內(nèi)容如下
一、問題描述及功能要求
1、分數(shù)計算器程序的每種功能都可以用菜單選項列出,用戶可以根據(jù)需要選擇相應的菜單項,從而執(zhí)行不同的子程序以完成相應的功能
2、增加運算符重載功能,使所設計的分數(shù)計算器可以進行四則運算&冪運算&邏輯運算。四則運算&冪運算可以用菜單選項列出,用戶可以根據(jù)需要選擇相應的運算。
3、程序具有判斷功能,當有非法的輸入時(如分母等于零等),能給出提示信息并退出運算
4、可將分數(shù)化為十進制小數(shù)和帶分數(shù)
5、設計邏輯功能的函數(shù)使其可以進行邏輯比較,比如大于、小于的邏輯比較。
6、設計數(shù)字選擇功能程序,用戶可以輸入數(shù)字鍵選擇進行四則運算&冪運算或邏輯比較,運算結(jié)果為TRUE或FLASE。
7、要求界面提示清楚、便于操作
二、代碼實現(xiàn) 帶有注釋
廢話不說,直接代碼,歡迎指正。
大家CV可能有不兼容的情況,可以跟我滴滴,盡可能解決問題地回復。
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
using namespace std;
void jiafa1()
{
system("cls");
while(1)
{
long long int a,c,d,f;
char b,e;
cin>>a>>b>>c>>d>>e>>f;
a=a*f+d*c;
c=c*f;
int flag=1;
if((a<0&&c<0)||(a>0&&c>0)) flag=0;
a=abs(a);c=abs(c);
if(a%c==0)
{
if(flag==0){cout<<a/c<<endl;}
if(flag==1){cout<<"-"<<a/c<<endl;}
}
else if(a>c)
{
int x,y;
x=a;y=c;
int z=c;
while(a%c!=0)
{
z=a%c;
a=c;
c=z;
}
a=x/z;c=y/z;
if(flag==0){cout<<a<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a<<"/"<<c<<endl;}
}
else if(c>a)
{
int x,y;
x=a;y=c;
int z=a;
while(c%a!=0)
{
z=c%a;
c=a;
a=z;
}
c=y/z;a=x/z;
if(flag==0){cout<<a<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a<<"/"<<c<<endl;}
}
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void jiafa2()
{
system("cls");
while(1)
{
long long int a,c,d;
char b;
cin>>a>>b>>c>>d;
a=a+d*c;
cout<<a<<"/"<<c<<endl;
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void jiafa()
{
while(1)
{
system("cls");
cout<<"(1) 兩個分數(shù)"<<endl;
cout<<"(2) 分數(shù)和整數(shù)"<<endl;
cout<<"(3) 返回上一級"<<endl;
int a;cin>>a;
if(a==1){jiafa1();}
if(a==2){jiafa2();}
if(a==3){break;}
}
}
void jianfa1()
{
system("cls");
while(1)
{
int a,c,d,f;
char b,e;
cin>>a>>b>>c>>d>>e>>f;
a=a*f-d*c;
c=c*f;
int flag=1;
if((a<0&&c<0)||(a>0&&c>0)) flag=0;
a=abs(a);c=abs(c);
if(a%c==0)
{
if(flag==0){cout<<a/c<<endl;}
if(flag==1){cout<<"-"<<a/c<<endl;}
}
else if(a>c)
{
int x,y;
x=a;y=c;
int z=c;
while(a%c!=0)
{
z=a%c;
a=c;
c=z;
}
a=x/z;c=y/z;
if(flag==0){cout<<a<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a<<"/"<<c<<endl;}
}
else if(c>a)
{
int z=a;
int x,y;
x=a;y=c;
while(c%a!=0)
{
z=c%a;
c=a;
a=z;
}
a=x/z;c=y/z;
if(flag==0){cout<<a<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a<<"/"<<c<<endl;}
}
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void jianfa2()
{
system("cls");
while(1)
{
long long int a,c,d;
char b;
cin>>a>>b>>c>>d;
a=a-d*c;
cout<<a<<"/"<<c<<endl;
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void jianfa()
{
while(1)
{
system("cls");
cout<<"(1) 兩個分數(shù)"<<endl;
cout<<"(2) 分數(shù)和整數(shù)"<<endl;
cout<<"(3) 返回上一級"<<endl;
int a;cin>>a;
if(a==1){jianfa1();}
if(a==2){jianfa2();}
if(a==3){break;}
}
}
void chengfa1()
{
system("cls");
while(1)
{
long long int a,c,d,f;
char b,e;
cin>>a>>b>>c>>d>>e>>f;
a=a*d;c=c*f;
int flag=1;
if((a<0&&c<0)||(a>0&&c>0)) flag=0;
a=abs(a);c=abs(c);
if(a%c==0)
{
if(flag==0){cout<<a/c<<endl;}
if(flag==1){cout<<"-"<<a/c<<endl;}
}
else if(a>c)
{
int z=c;
int x,y;x=a,y=c;
while(a%c!=0)
{
z=a%c;
a=c;
c=z;
}
a=x/z;c=y/z;
if(flag==0){cout<<a<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a<<"/"<<c<<endl;}
}
else if(c>a)
{
int z=a;
int x,y;x=a;y=c;
while(c%a!=0)
{
z=c%a;
c=a;
a=z;
}
a=x/z;c=y/z;
if(flag==0){cout<<a<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a<<"/"<<c<<endl;}
}
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void chengfa2()
{
system("cls");
while(1)
{
long long int a,c,d;
char b;
cin>>a>>b>>c>>d;
int flag=1;
if((a<0&&d<0)||(a>0&&d>0)) flag=0;
a=abs(a);d=abs(d);
if(d%c==0) {a=a*(d/c);
if(flag==0) {cout<<a<<endl;}
if(flag==1) {cout<<"-"<<a<<endl;}
}
else if(c%d==0)
{
if(flag==0) {cout<<a<<"/"<<c/d<<endl;}
if(flag==1) {cout<<"-"<<a<<"/"<<c/d<<endl;}
}
else
{
if(flag==0){cout<<a*d<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a*d<<"/"<<c<<endl;}
}
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void chengfa()
{
while(1)
{
system("cls");
cout<<"(1) 兩個分數(shù)"<<endl;
cout<<"(2) 分數(shù)和整數(shù)"<<endl;
cout<<"(3) 返回上一級"<<endl;
int a;cin>>a;
if(a==1){chengfa1();}
if(a==2){chengfa2();}
if(a==3){break;}
}
}
void chufa1()
{
system("cls");
while(1)
{
int a,c,d,f;
char b,e;
cin>>a>>b>>c>>d>>e>>f;
int flag=1;
a=a*f;c=c*d;if((a<0&&c<0)||(a>0&&c>0)) flag=0;
a=abs(a);c=abs(c);
if(a%c==0)
{
if(flag==0) cout<<a/c<<endl;
if(flag==1) cout<<"-"<<a/c<<endl;
}
else if(a>c)
{
int z=c;
int x,y;x=a;y=c;
while(a%c!=0)
{
z=a%c;
a=c;
c=z;
}
a=x/z;c=y/z;
if(flag==0){cout<<a<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a<<"/"<<c<<endl;}
}
else if(c>a)
{
int z=a;
int x,y;x=a;y=c;
while(c%a!=0)
{
z=c%a;
c=a;
a=z;
}
a=x/z;c=y/z;
if(flag==0){cout<<a<<"/"<<c<<endl;}
if(flag==1){cout<<"-"<<a<<"/"<<c<<endl;}
}
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void chufa2()
{
system("cls");
while(1)
{
long long int a,c,d;
char b;
cin>>a>>b>>c>>d;
int flag=1;
if((a<0&&d<0)||(a>0&&d>0)) flag=0;
a=abs(a);d=abs(d);
if(d%c==0) {a=a*(d/c);if(flag==0){cout<<a<<endl;}if(flag==1){cout<<"-"<<a<<endl;}}
else if(c%d==0)
{
if(flag==0) {cout<<a<<"/"<<c/d<<endl;}
if(flag==1) {cout<<"-"<<a<<"/"<<c/d<<endl;}
}
else
{
if(flag==0) {cout<<a*d<<"/"<<c<<endl;}
if(flag==1) {cout<<"-"<<a*d<<"/"<<c<<endl;}
}
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void chufa()
{
while(1)
{
system("cls");
cout<<"(1) 兩個分數(shù)"<<endl;
cout<<"(2) 分數(shù)和整數(shù)"<<endl;
cout<<"(3) 返回上一級"<<endl;
int a;cin>>a;
if(a==1){chufa1();}
if(a==2){chufa2();}
if(a==3){break;}
}
}
void chengfang1()
{
system("cls");
while(1)
{
long long int a,c,d;
char b;
cin>>a>>b>>c>>d;
int flag=1;
if(a<0&&d%2==0) flag=0;
if(a>0) flag=0;
a=abs(a);
long int sum1=1;
long int sum2=1;
while(d--)
{
sum1*=a;
sum2*=c;
}
if(flag==0){cout<<sum1<<"/"<<sum2<<endl;}
if(flag==1){cout<<"-"<<sum1<<"/"<<sum2<<endl;}
cout<<"1繼續(xù)使用,0返回上一級"<<endl;
int g;cin>>g;
if(g==1) continue;
if(g==0) break;
}
}
void chengfang()
{
while(1)
{
system("cls");
cout<<"(1) 分數(shù)和整數(shù)"<<endl;
cout<<"(2) 返回上一級"<<endl;
int a;cin>>a;
if(a==1){chengfang1();}
if(a==2){break;}
}
}
void sizeyunsuan()
{
while(1)
{
system("cls");
cout<<"(1) 加法運算"<<endl;
cout<<"(2) 減法運算"<<endl;
cout<<"(3) 乘法運算"<<endl;
cout<<"(4) 除法運算"<<endl;
cout<<"(5) 乘方運算"<<endl;
cout<<"(6) 返回上一級"<<endl;
int a;cin>>a;
if(a==1) {jiafa();}
if(a==2){jianfa();}
if(a==3){chengfa();}
if(a==4){chufa();}
if(a==5){chengfang();}
if(a==6) break;
}
}
void jiemian()
{
cout<<"(1) 四則運算及冪運算"<<endl;
cout<<"(2) 退出程序"<<endl;
int xxx;cin>>xxx;
if(xxx==1){sizeyunsuan();}
if(xxx==2){system("cls");cout<<"蟹蟹你的使用,歡迎下次使用哦"<<endl;exit(0);}
}
int main()
{
while(1)
{
system("cls");
jiemian();
}
return 0;
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
C++11 std::function和std::bind 的使用示例詳解
C++11中的std::function和std::bind是函數(shù)對象的重要組成部分,它們可以用于將函數(shù)和參數(shù)綁定在一起,形成一個可調(diào)用的對象,這篇文章主要介紹了C++11 std::function和std::bind 的使用示例詳解,需要的朋友可以參考下2023-03-03
數(shù)據(jù)結(jié)構(gòu)與算法:單向鏈表實現(xiàn)與封裝
今天小編就為大家分享一篇關于數(shù)據(jù)結(jié)構(gòu)與算法:單向鏈表實現(xiàn)與封裝,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12

