CPP开方


#include "mySqrt.hpp"
#include <iostream>
#include <string>
#include <assert.h>

using namespace std;

int *mySqrt(double, int max = 150);
double mySqrt1(double num, int max);

int main()
{

    int num;
    cout << "输入一个数:";
    cin >> num;
    int i = 1;
    int *a = mySqrt(num);
    cout << "√(" << num << ") = " << a[0];
    if (a[i] != -1)
    {
        cout << ".";
    }
    while (a[i] != -1)
    {
        cout << a[i];
        i++;
    }
    cout << endl;

    // system("pause");

    return 0;
    // cout << mySqrt(25) << endl;
}

/*
 num:需要开方的数字
 max:精确到多少位
 */
int *mySqrt(double num, int max)
{
    int *a = new int[max];
    /*for (int w = 0; w < max; w++) {
        a[w] = 0.0;
    }*/
    assert(num > 0);
    int i = 1;
    int d = 1;
    double divisor;  // 除数
                     // int divisor_Next; // 传给下一个后
    double dividend; // 被除数
    double down;     // 下边的数
    double trading;  // 商
                     // double finalTrad;

    while (i * i < num)
    {
        trading = i;
        i++;
    }

    if (i * i == num)
    {
        a[0] = i;
        a[1] = -1;
        return a;
    }
    else
    {
        a[0] = (i - 1);
    }

    // cout << trading << endl;
    dividend = num - (i - 1) * (i - 1);
    // cout << dividend << endl;
    divisor = trading * 20;
    // cout << divisor << endl; //40
    for (int j = 0; j < max; j++)
    {
        int k = 0;
        for (k = 0; k <= 9; k++)
        {
            if ((divisor + k) * k >= dividend * 100)
            {
                //cout << (k - 1) << " ";

                break;
            }
        }
        a[d] = k - 1;
        //cout << a[d] << " ";
        // cout << "k" << k << endl;
        dividend *= 100; // 除的数字 300 上边的数字
        down = (divisor + (k - 1)) * (k - 1);
        dividend = dividend - down;
        // cout << "下边" << dividend << endl;
        // cout << "下" << xia << endl;
        // cout << dividend << endl;
        trading = trading * 10 + (k - 1); // 最上边的最后的得数
        // cout << trading << endl;
        // cout << j << endl;
        divisor = trading * 20; // 左边的数
        d++;
    }
    // cout << d << endl;
    // while ((d - 1) > 0)
    // {
    //     trading /= 10.0;
    //     d--;
    // }
    // return trading;
    a[d - 1] = -1;

    return a;

    // cout << "   " << divisor;
}

double mySqrt1(double num, int max)
{
    // assert(num > 0);
    int i = 1;
    int d = 1;
    double divisor; // 除数
    // int divisor_Next; // 传给下一个后
    double dividend; // 被除数
    double down;     // 下边的数
    double trading;  // 商
    // double finalTrad;

    while (i * i < num)
    {
        trading = i;
        i++;
        if (i * i == num)
        {
            return i;
        }
    }
    // cout << trading << endl;
    dividend = num - (i - 1) * (i - 1);
    // cout << dividend << endl;
    divisor = trading * 20;
    // cout << divisor << endl; //40
    for (int j = 0; j < max; j++)
    {
        int k = 0;
        for (k = 0; k <= 9; k++)
        {
            if ((divisor + k) * k >= dividend * 100)
            {
                break;
            }
        }
        // cout << "k" << k << endl;
        dividend *= 100; // 除的数字 300 上边的数字
        down = (divisor + (k - 1)) * (k - 1);
        dividend = dividend - down;
        // cout << "下边" << dividend << endl;
        // cout << "下" << xia << endl;
        // cout << dividend << endl;
        trading = trading * 10 + (k - 1); // 最上边的最后的得数
        // cout << trading << endl;
        // cout << j << endl;
        divisor = trading * 20; // 左边的数
        d++;
    }

    while ((d - 1) > 0)
    {
        trading /= 10.0;
        d--;
    }
    return trading;

    // cout << "   " << divisor;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++可视化计算器是一种使用C++编程语言开发的计算器软件,可以通过图形界面来实现计算功能。这种计算器软件通常具有美观、易用、可扩展性强等优点,并且可以广泛应用于科学、工程、经济等领域。 实现一个C++可视化计算器需要具备一定的编程能力和计算机科学知识。首先,需要掌握C++基础语法知识及其面向对象的编程思想,如类、成员函数、继承等。其次,需要掌握相关图形界面开发框架的使用,如Qt、MFC、WXWidgets等,以便轻松地完成用户界面的设计和实现。另外,还需要掌握算法和数学知识,以实现计算器所需要的各种功能,如加减乘除、开方、三角函数、指数函数等。 C++可视化计算器的实现可以分为两部分,一部分是用户界面的设计和实现,另一部分是计算功能的实现。对于用户界面的设计和实现,开发者可以借助各种图形界面开发框架进行快速开发,通过设计按钮、文本框、菜单等控件,实现计算器的各个功能界面。计算器的另一部分功能实现则需要通过C++语言的算法和数学库,来设计并实现各种数学计算式和运算符的计算过程。 总之,C++可视化计算器是一种非常实用的软件开发工具,可以为人们提供一个快速、精准的数学计算平台。通过了解C++编程语言及其相关知识,我们可以实现高效的计算器应用程序,提升人们的生产、学习和研究效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值