【发布时间】:2021-02-15 15:30:16
【问题描述】:
此代码用于解析计算器(变量是西班牙语,但我认为您阅读它不会有问题)。我不知道为什么这段代码不起作用。
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
int main() {
int a, b, c, raiz, r, resultado1, resultado2;
cout<<"Determine el valor de A: "; cin>> a; cout<<"\n";
cout<<"Determine el valor de B: "; cin>> b; cout<<"\n";
cout<<"Determine el valor de C: "; cin>> c; cout<<"\n";
raiz = pow(b,2) - (4 * a * c);
r = sqrt(raiz);
if (raiz > 0) {
resultado1 = ((b * -1) + r) / (2 * a);
resultado2 = ((b * -1) - r) / (2 * a);
cout<<"El valor de X1 es: "<<resultado1<<endl<<endl;
cout<<"El valor de X2 es: "<<resultado2<<endl<<endl;
}
if (raiz < 0) {
cout<<"La raiz posee un valor negativo, por lo que no podra resolverse. El valor negativo dentro
de la raiz es "<<raiz;
}
getch();
return 0;
}
【问题讨论】:
-
您需要准确地描述您的程序是如何运行的。显示输入、输出和预期输出的示例。
-
它究竟以什么方式“不起作用”?你需要更具体。
-
提示:不要一次性声明一堆变量,而是在使用它们的上下文中根据需要单独声明它们。如:
double r = sqrt(raiz). -
战术说明:编译器越来越聪明,有些人知道这个技巧,但
pow(b,2)通常不如b*b有效。一个简单的乘法可能会更快,并且因为pow对浮点数进行运算并且浮点数不精确,所以在转换回整数时可能会在计算中造成一些损害,这些损害会变得非常明显。 -
您可以将
getch()替换为std::cin.ignore(1000000, '\n');并删除#include`
标签: c++ if-statement calculator quadratic