首页 > 解决方案 > 为什么我的代码中的根函数不起作用?

问题描述

所以,我最近开始编程并决定制作一个功能齐全的计算器,但每次我运行我的代码并尝试执行 root 操作时,我只是添加它只是循环我的整个脚本直到停止。这是我的根函数和它用于的 switch 语句:

void Root(float x, float y)
{
    float z;
    float w;
    float q = x - 1;
    float guess = 1;

    z = y / guess;
    w = guess * q + z;
    z = w / x;

    for (int i = 0; i < 50; i++)
    {
        for (int i = 0; i < q; i++)
        {
            guess = guess * z;
        }

        w = y / guess;

        z = w * q + z;
        w = z / x;
    }
    
    cout << w;
}

while (YesOrNo == 'y' && 'Y')
{
    float x, y;
    char op;
    cout << "Write the first number, the operator then the second number: ";
    cin >> x >> op >> y;

    switch (op)
    {
    case '+':
        Addition(x, y);
        break;
    case '-':
        Substraction(x, y);
        break;
    case '*':
    case 'x':
        Multiplication(x, y);
        break;
    case '/':
        Division(x, y);
        break;
    case '^':
        Power(x, y);
        break;
    case 'rt':
        Root(x, y);
        break;
    default:
        cout << "INVALID_OPERATOR\n";
        break;
    }

标签: c++math

解决方案


    float x, y;
    char op;
    cout << "Write the first number, the operator then the second number: ";
    cin >> x >> op >> y;

此代码只能接受一个数字,后跟一个字符,后跟另一个数字。任何地方都没有代码可以处理任何其他输入。由于“rt”不是单个字符,因此无法调用根函数。如果您给它不期望的输入并且输入了它不期望的两个字符,则代码将中断。

如果输入“37rt5”,“37”将被读取为第一个数字,“r”为单个字符,然后“t”将被读取为第二个数字。当然,没有数字以“t”开头,所以会失败。

您的代码一遍又一遍地重复失败的操作。所以它只会一遍又一遍地失败。没有任何代码可以处理连续的两个字符,因此代码将继续不处理它们。


推荐阅读