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;
}

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

(0)

相关推荐

  • C++有限状态机实现计算器小程序

    本文介绍利用有限状态机原理开发计算器小程序的过程. 实现的功能 支持整数.小数输入 支持+ - * / 四则运算 CE 清除当前操作数 C 清除所有.回到初始状态 回显操作数和结果 HSM状态图 计算器可以分为七种状态:Start.Operand_1.Negate_1.Operator.Operand_2.Negate_2.Error.其中Start.Operand_1.Operand_1状态又分了几种子状态. 下面简要的介绍下状态状态转换的过程: 启动软件,进入Start状态 当用户点击1-9

  • C++实现简单计算器

    本文实例为大家分享了C++实现简单计算器的具体代码,供大家参考,具体内容如下 工具 stack map 步骤 初始化 读取字符串 去空格 负号处理 判断为空 检查格式 计算 示例 代码 #include <iostream> #include <string> #include <stdio.h> #include <stack> #include <map> #include <math.h> #include <stdlib

  • C++结合QT实现带有优先级的计算器功能

    代码 MyCalculator.h #pragma once #include <QtWidgets/QMainWindow> #include <QStack> #include <QString> #include "ui_MyCalculator.h" class MyCalculator : public QMainWindow { Q_OBJECT public: MyCalculator(QWidget *parent = Q_NULLP

  • C/C++实现日期计算器的示例代码

    问题介绍: 今天突然看到一个问题看起来蛮有趣的,跟大家分享一下. 给定任意日期对该日期进行加减天数,最后得出加减后出现的日期.以及给两个日期你可以得出他们两个之间相隔多少天.(需要考虑闰年,每个月天数不同,我们需要写一个我们直接可以使用的日期加减器)因为时间比较仓促,我也没有写界面,只有其中几个主要的函数的架构思想以及简单的调试就发出来了. 代码实现: #include<iostream> #include<Windows.h> #include<assert.h> u

  • 简单实现C++复数计算器

    本文实例为大家分享了简单实现C++复数计算器的具体代码,供大家参考,具体内容如下 1.有关计算器的功能  A,实现多个复数(包括实数)的加减乘除,大小比较,   B.实现十进制实数的进制转换,可以转换任意进制 2.有关设计的原理  A.复数计算的部分,采用运算符的重载,进行复数的加减乘除以及大小比较  对于输入输出,(>>和<<),加减乘除运算进行重载.  输入的重载,实现a+bi形式的复数的输入.  输出的重载,实现实数的输出(实现特殊的只输出实部虚部之类的).  加减乘除的重载

  • 基于C++实现简单日期计算器

    基于C++编写的简单的日期计算器,供大家参考,具体内容如下 以下代码是在VS2013下编译运行的: 下面展示我的测试结果: 标题 代码如下: #include<iostream> using namespace std; #include"vld.h"//这个是检测虚拟内存是否泄露,我在这里安装了vld,所以直接用,包含头文件就好了 class Date { public: //构造函数 Date(int year=2018, int month=8, int day=16

  • C++实现四则混合运算计算器

    本文实例为大家分享了C++实现四则混合运算的计算器,供大家参考,具体内容如下 计算器是带括号的四则运算实际上利用的是栈后进先出的原则 转换思想: #define _CRT_SECURE_NO_WARNINGS 1 #include"stdio.h" #include"stdlib.h" #include"string.h" #define maxsize 1024 typedef struct { float data[maxsize]; int

  • C/C++经典实例之模拟计算器示例代码

    前言 本文主要给大家介绍了关于利用C/C++如何实现模拟计算器的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. Problem Description 简单计算器模拟:输入两个整数和一个运算符,输出运算结果. Input 第一行输入两个整数,用空格分开: 第二行输入一个运算符(+.-.*./). 所有运算均为整数运算,保证除数不包含0. Output 输出对两个数运算后的结果. Example Input 30 50 * Example Output import j

  • C++实现小型复数计算器

    小型复数计算器项目设计,供大家参考,具体内容如下 一.问题描述及功能要求 1.实现复数的设置和显示. 2.声明一个复数类Complex,重载运算符 "+". "-". "*". "/",使之能用于复数的加.减.乘.除,运算符重载函数作为Complex类的成员函数. 3.声明一个复数类Complex,重载运算符 "+",使之能用于复数的加法运算.参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序

  • C++实现分数计算器

    分数计算器项目设计,供大家参考,具体内容如下 一.问题描述及功能要求 1.分数计算器程序的每种功能都可以用菜单选项列出,用户可以根据需要选择相应的菜单项,从而执行不同的子程序以完成相应的功能 2.增加运算符重载功能,使所设计的分数计算器可以进行四则运算&幂运算&逻辑运算.四则运算&幂运算可以用菜单选项列出,用户可以根据需要选择相应的运算. 3.程序具有判断功能,当有非法的输入时(如分母等于零等),能给出提示信息并退出运算 4.可将分数化为十进制小数和带分数 5.设计逻辑功能的函数使

  • Python实现分数序列求和

    我就废话不多说了,直接上代码吧! #!/usr/bin/env python # coding:UTF-8 """ @version: python3.x @author:曹新健 @contact: 617349013@qq.com @software: PyCharm @file: 1223.py @time: 2018/12/23 20:56 """ ''' 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列

  • IO实现计算器功能

    本文实例为大家分享了IO实现计算器功能的具体代码,供大家参考,具体内容如下 代码: // // ViewController.m // Fraction_Calculator // // Created by 鲁军 on 2021/4/26. // #import "ViewController.h" #import "Calculator.h" @interface ViewController () @property(nonatomic,strong)IBOu

  • PowerShell 语音计算器实现代码

    带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币 大写,如:123.4--->壹佰贰拾叁点肆圆. [程序界面抓图] 版本号 1.51 下载:/201710/tools/voice_calc_jb51.rar [本程序定位] 本程序定位为:语音+简单+常用+方便的+免费软件. 所以本程序并不打算提供语音开关功能.假如不需要语音功能,建议使用微软自带的计算器. [开发初衷] 带有语音的计算器软件大都收费或者是破解版,而我这个首先不收费, 其次开源,也就是说绝无后门,你还可以di

  • 基于AngularJS实现iOS8自带的计算器

    前言 首先创建angularjs的基本项目就不说了,最好是利用yeoman这个脚手架工具直接生成,如果没有该环境的,当然也可以通过自行下载angularjs的文件引入项目. 实例详解 main.js是项目的主要js文件,所有的js都写在这个文件中,初始化之后,该文件的js代码如下 angular .module('calculatorApp', [ 'ngAnimate', 'ngCookies', 'ngResource', 'ngRoute', 'ngSanitize', 'ngTouch'

  • C语言数据结构之简易计算器

    本文实例为大家分享了C语言简易计算器的具体代码,供大家参考,具体内容如下 主要解决了处理负数.小数等的基础运算操作,无图形界面 #include <iostream> #include <stack> using namespace std; class Calculator{ private: int Priority(char fuhao); double CalSuffix(string PostfixExp); public: double Calculate(string

  • C#实现的简单整数四则运算计算器功能示例

    本文实例讲述了C#实现的简单整数四则运算计算器功能.分享给大家供大家参考,具体如下: 运行效果图如下: 具体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace 计算器 { public pa

  • 超级简易的JS计算器实例讲解(实现加减乘除)

    废话不多说,直接上代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>简单的计算器</title> <style> body{ margin: 0; } .tab{ border: 3px solid black ; border-radius: 2px; border-collapse:collapse; width: 268p

  • JSP实现计算器功能(网页版)

    jsp实现网页计算器代码如下:只有两个jsp页面 myCal.jsp如下: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getS

随机推荐