C++实现分数计算器

 更新时间:2021年06月17日 15:20:02   作者:名名名名  
这篇文章主要为大家详细介绍了C++实现分数计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

分数计算器项目设计,供大家参考,具体内容如下

一、问题描述及功能要求

1、分数计算器程序的每种功能都可以用菜单选项列出,用户可以根据需要选择相应的菜单项,从而执行不同的子程序以完成相应的功能
2、增加运算符重载功能,使所设计的分数计算器可以进行四则运算&幂运算&逻辑运算。四则运算&幂运算可以用菜单选项列出,用户可以根据需要选择相应的运算。
3、程序具有判断功能,当有非法的输入时(如分母等于零等),能给出提示信息并退出运算
4、可将分数化为十进制小数和带分数
5、设计逻辑功能的函数使其可以进行逻辑比较,比如大于、小于的逻辑比较。
6、设计数字选择功能程序,用户可以输入数字键选择进行四则运算&幂运算或逻辑比较,运算结果为TRUE或FLASE。
7、要求界面提示清楚、便于操作

二、代码实现 带有注释

废话不说,直接代码,欢迎指正。

大家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继续使用,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继续使用,0返回上一级"<<endl;
        int g;cin>>g;
        if(g==1) continue;
        if(g==0) break;
    }

}
void jiafa()
{
    while(1)
    {
        system("cls");
        cout<<"(1) 两个分数"<<endl;
        cout<<"(2) 分数和整数"<<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继续使用,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继续使用,0返回上一级"<<endl;
        int g;cin>>g;
        if(g==1) continue;
        if(g==0) break;
    }
}
void jianfa()
{
   while(1)
    {
        system("cls");
        cout<<"(1) 两个分数"<<endl;
        cout<<"(2) 分数和整数"<<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继续使用,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继续使用,0返回上一级"<<endl;
        int g;cin>>g;
        if(g==1) continue;
        if(g==0) break;
    }

}
void chengfa()
{
    while(1)
    {
        system("cls");
        cout<<"(1) 两个分数"<<endl;
        cout<<"(2) 分数和整数"<<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继续使用,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继续使用,0返回上一级"<<endl;
        int g;cin>>g;
        if(g==1) continue;
        if(g==0) break;
    }

}
void chufa()
{
    while(1)
    {
        system("cls");
        cout<<"(1) 两个分数"<<endl;
        cout<<"(2) 分数和整数"<<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继续使用,0返回上一级"<<endl;
        int g;cin>>g;
        if(g==1) continue;
        if(g==0) break;
    }


}
void chengfang()
{
    while(1)
    {
        system("cls");
        cout<<"(1) 分数和整数"<<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;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • LoadLibrary深入案例详解

    LoadLibrary深入案例详解

    这篇文章主要介绍了LoadLibrary深入案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++模拟实现string的方法详解

    C++模拟实现string的方法详解

    标准库类型string表示可变长的字符序列,使用string类型必须首先包含string的头文件。本文将利用C++模拟实现string,需要的可以参考一下
    2022-11-11
  • 使用C/C++语言生成一个随机迷宫游戏

    使用C/C++语言生成一个随机迷宫游戏

    迷宫相信大家都走过,主要是考验你的逻辑思维。今天小编使用C语言生成一个随机迷宫游戏,具体实现代码,大家通过本文学习吧
    2016-12-12
  • 关于C++的.cpp文件运行全过程

    关于C++的.cpp文件运行全过程

    这篇文章主要介绍了C++的.cpp文件运行全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • C++ ncnn模型验证精度实现代码

    C++ ncnn模型验证精度实现代码

    这篇文章主要介绍了C++ ncnn模型验证精度实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • 基于C中一个行压缩图的简单实现代码

    基于C中一个行压缩图的简单实现代码

    首先简单说一下什么是行压缩图,其实严格意义上应该是行压缩矩阵
    2013-05-05
  • C/C++实现快速排序算法的两种方式实例

    C/C++实现快速排序算法的两种方式实例

    快速排序是一种采用分治思想,在实践中通常运行较快一种排序算法,这篇文章主要给大家介绍了关于C/C++实现快速排序的两种方式的相关资料,文中给出了详细的示例代码,需要的朋友可以参考下
    2021-08-08
  • Linux C/C++ timeout命令实现运行具有时间限制功能

    Linux C/C++ timeout命令实现运行具有时间限制功能

    inux timeout命令的一个属性是时间限制。可以为任何命令设置时间限制。如果时间到期,命令将停止执行,这篇文章主要介绍了Linux C/C++ timeout命令实现(运行具有时间限制),需要的朋友可以参考下
    2023-02-02
  • C++11利用原子操作实现自旋锁

    C++11利用原子操作实现自旋锁

    C++自旋锁是一种低层次的同步原语,用于保护共享资源的访问,这篇文章主要为大家介绍了如何利用原子操作实现自旋锁,感兴趣的小伙伴可以了解下
    2023-09-09
  • c语言swap(a,b)值交换的4种实现方法

    c语言swap(a,b)值交换的4种实现方法

    c语言swap(a,b)值交换的4种实现方法,这么好的东西,尽管简单,但值得发表,以此共享。
    2013-02-02

最新评论