c++ - 为什么我的代码中的根函数不起作用?
问题描述
所以,我最近开始编程并决定制作一个功能齐全的计算器,但每次我运行我的代码并尝试执行 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;
}
解决方案
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”开头,所以会失败。
您的代码一遍又一遍地重复失败的操作。所以它只会一遍又一遍地失败。没有任何代码可以处理连续的两个字符,因此代码将继续不处理它们。
推荐阅读
- css - 谷歌浏览器自动填充背景颜色变化?
- microsoft-graph-api - 同一邮件消息的多个不可变 ID?
- sql - 当我将数据添加到表 A 时,有没有办法通过约束自动将数据添加到表 B
- javascript - 如何在数组中循环每个 idx 的对象属性?
- python - 在拥有的页面上获得评论
- python - 在循环中覆盖类变量
- subscription - 什么是 Lighthouse GraphQL 订阅最佳实践
- json - 在 VBA 宏中循环遍历 json 中的子对象
- c++ - 我可以在 C++ 中的函数声明中初始化向量向量的大小(行和列)吗?
- amazon-ec2 - sftp 大文件(>1GB)失败,仅传输特定的数据字节。为什么?