【问题标题】:What's the problem with this code for a resolvent calculator?解析计算器的这段代码有什么问题?
【发布时间】: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


【解决方案1】:

即使 abcints,rresultado1resultado2 的结果也不一定是这样。它们应该定义为doubles:

double r, resultado1, resultado2;

【讨论】:

  • 感谢您和大家!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2018-09-09
相关资源
最近更新 更多