首页 > 其他分享 >三角函数计算器

三角函数计算器

时间:2023-11-30 19:44:06浏览次数:27  
标签:return 三角函数 num2 int double menu 计算器 select

一个简单的三角函数计算器

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <cmath>
constexpr auto PI = M_PI;

int menu_select() {
    int select;
    std::cout << "-------Welcome to Snow Calculator-------" << std::endl;
    std::cout << "               1. sin x                 " << std::endl;
    std::cout << "               2. cos x                 " << std::endl;
    std::cout << "               3. tan x                 " << std::endl;
    std::cout << "               4. cot x                 " << std::endl;
    std::cout << "               5. Clean screen          " << std::endl;
    std::cout << "               0. to quit               " << std::endl;
    std::cout << "----------------------------------------" << std::endl;
    std::cin >> select;
    return select;
}

double inputtrans(void) {
    double x;

    std::cout << "Please input x: " << std::endl;
    std::cin >> x;
    while (x >= 360.0)
    {
        x -= 360.0;
    }
    return (x * PI / 180.0);
}

double factorial(double n) {
    if (n <= 1) {
        return n;
    }
    else {
        return n * factorial(n - 1);
    }
}

//下面为求绝对值函数
double myabs(double num1)
{
    return((num1 > 0) ? num1 : -num1);
}

//下面为求sin(x)的值
double snowsin(double num2)
{
    int i = 1, negation = 1;//取反
    double sum;
    double index = num2;//指数
    double Factorial = 1;//阶乘
    double TaylorExpansion = num2;//泰勒展开式求和
    do
    {
        Factorial = Factorial * ((__int64)i + 1) * ((__int64)i + 2);//求阶乘
        index *= num2 * num2;//求num2的次方
        negation = -negation;//每次循环取反
        sum = index / Factorial * negation;
        TaylorExpansion += sum;
        i += 2;
    } while (myabs(sum) > 1e-15);
    return(TaylorExpansion);
}

double snowcos(double x) {
    x = (PI / 2) - x;
    return sin(x);
}

double snowtan(double x) {
    return (snowsin(x) / snowcos(x));
}

double snowcot(double x) {
    return (1 / snowtan(x));
}

int main()
{
    double result = 0.0;
    double x = 0.0;
    int menu = menu_select();
    while (menu != 0)
    {
        switch (menu)
        {
        case 1:
            x = inputtrans();
            result = snowsin(x);
            std::cout << std::fixed << std::setprecision(5) << "Result =  " << result << std::endl;
            break;
        case 2:
            x = inputtrans();
            result = snowcos(x);
            std::cout << std::fixed << std::setprecision(5) << "Result =  " << result << std::endl;
            break;
        case 3:
            x = inputtrans();
            result = snowtan(x);
            std::cout << std::fixed << std::setprecision(5) << "Result =  " << result << std::endl;
            break;
        case 4:
            x = inputtrans();
            result = snowcot(x);
            std::cout << std::fixed << std::setprecision(5) << "Result =  " << result << std::endl;
            break;
        case 5:
            system("cls");
            break;
        case 0:
            break;
        default:
            std::cout << "Wrong input, please input again!" << std::endl;
            break;
        }
        if (menu == 0) {
            break;
        }
        menu = menu_select();
    }
    std::cout << "Thank you for using!\nPress any key to exit.\n";
    system("pause");
}

标签:return,三角函数,num2,int,double,menu,计算器,select
From: https://www.cnblogs.com/BadBadBad/p/sin-cos-tan.html

相关文章

  • 计算器登录页面的设计与实现
     【实验内容】1.设计一个包含登录界面的计算器软件,该软件可以实现第一次作业中的全部功能,同时可以保存用户的历史计算记录(保存数据最好使用数据库)。【实验环境及开发工具】1.使用visors绘制流程图。2.使用eclipse编写软件。【流程图设计】(1)软件总体流程图 (2)登录界面流......
  • JavaSE练习,JDBC驱动,基于swing库的带登录功能计算器
    一、前言本次作业是基于上次的计算器功能所做的改进,通过JDBC连接MySQL增加了登录与注册功能,并对计算器所作的运算进行了记录。虽然基于上次的作业所作,但是设计编写的模块大部分与之无关(登录注册自然与计算器无关)。所以本次作业属于再开发而不是运营维护。二、概要设计......
  • 栈实现计算器
    计算器/***@author缪广亮*@version1.0*/@SuppressWarnings({"all"})publicclassCalculator{publicstaticvoidmain(String[]args){//完成表达式的运算Stringexpression="770+2*6-4+1";//创建数栈和字符栈Linke......
  • 写一个加法计算器类
    """写一个加法计算器类。属性为数值1,数值2,方法为:相加并打印结果,在用户输入的任何一个值不是数字时都捕获异常,并打印一条友好的错误消息。应用异常处理和循环语句,直到用户输入”N“结束程序。为啥要缩进:缩进就是权限管理"""classComputer:def__init__(self,number1,number......
  • 基于html5+javascript技术开发的房贷利率计算器,买房的码农们戳进来
    房贷计算器是一款专为购房者设计的实用工具应用,其主要功能是帮助用户详细计算房贷的还款金额、利息以及还款计划等。通过这款软件,用户可以更加便捷地了解到自己的还款情况和计划,从而更好地规划自己的财务。下面将对房贷计算器进行详细的介绍。体验地址房贷计算器体验地址关键代码<t......
  • java图形界面化计算器
     虽然java的图形界界面化技术大部分都已经没有人使用了,但应老师的课堂要求,还是进行了一些简单的学习,并实现了一个图形界面化的可混合运算的简易计算器这个计算器主要使用了java本身带有的Swing实现图形界面化,以及学习了部分的栈来实现混合运算先把代码放上,除了(-)按键还没做好之外,其......
  • 使用Java与MySQL开发计算器
    [实验目的]1.掌握软件开发的基本流程2.掌握常用的软件开发方式和工具。[实验内容]设计一个包含登录界面的计算器软件,该软件可以实现第一次作业中的全部功能,同时可以保存用户的历史计算记录(保存数据最好使用数据库)。[实验环境及开发工具]使用MicrosoftVisio作绘图工具使用......
  • 机器视觉选型计算器,初级版,后续慢慢补充
    做机器视觉的都知道,每次选型都得做各种计算,但是没有人把硬件选型做出一个工具,今天利用一点闲暇时间,几分钟吧,简单做了个,后续再把其他一些硬件选型公式计算器功能做上去,有需要的自取。1.DPI相关计算器 2.工作距离相关计算器 3.待补充,编码器等 4.关于 有需要自行......
  • Java方法07:练习打一个计算器
    importjava.util.Scanner;publicclassDemo06{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);Stringy="Y";while(y.equals("Y")){System.out.println(&quo......
  • 实验5---Swing UI设计(简易计算器)
    一、实验目的本实验的目的是掌握JAVA容器类JFrame和JPanel的使用;掌握Swing常用布局的使用;掌握常用可视组件的使用。二、实验内容完成一个简单的计算器的功能。实现的效果图如下所示:  计算器实现的计算功能为:加、减、乘、除法、求余;“C”为清除,“<-“为退格等功能。三、......