二次方程程序输出数
quadratic equation program output numbers
对文字墙表示歉意。
我从我正在工作的书中得到了以下任务:
"二次方程的形式为:a x ^2+b x+c=0
为了解决这些问题,使用二次公式:(-b±√(b^2-4ac))/2a
但有一个问题:如果b^2-4ac小于零,那么它将失败。编写一个程序,可以计算一个二次方程的x。创建一个函数,打印出给定a、b、c的二次方程的根。当程序检测到一个没有实根的方程时,让它打印出一条消息。你怎么知道你的结果是可信的?你能检查一下它们是否正确吗"
我已经写了我的程序。但是,我得到的所有输出都是奇怪的数字。例如:7.08141e+268。这是使用4,所以我相信sqrt应该是2。
编辑:我已经修改了代码,现在收到了a、b、c的sqrt的正确值。但是,x1和x2给出了nan,这是错误的。希望这段代码更干净,布局更好。
double quad_x1(double b, double a, double c) {
double x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 *a);
return x1;
}
double quad_x2(double b, double a, double c) {
double x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
return x2;
}
double square_root_a(double a) {
double sq_a=sqrt(a);
if(sq_a<0){
throw invalid_argument("Input is less than zero.");
}
else {
return sq_a;
}
}
double square_root_b(double b) {
double sq_b=sqrt(b);
if(sq_b<0) {
throw invalid_argument("Input is less than zero.");
}
else {
return sq_b;
}
}
double square_root_c(double c) {
double sq_c=sqrt(c);
if(sq_c<0) {
throw invalid_argument("Input is less than zero.");
}
else {
return sq_c;
}
}
int main ()
{
try{
double a=4;
double b=4;
double c=4;
double sq_a = square_root_a(a);
double sq_b = square_root_b(b);
double sq_c = square_root_c(c);
double x1 = quad_x1( b, a, c);
double x2 = quad_x2( b, a, c);
cout<<"The square roots are: a = "<<sq_a<<" b = "<<sq_b<<" c = "<<sq_c<<'n';
cout<<"The answer to the quadratic is:n";
cout<<"x1 = "<<x1<<'n';
cout<<"x2 = "<<x2<<'n';
}
catch (invalid_argument) {
cerr<<"Invalid Input - Less than zero"<<'n';
return 1;
}
return 0;
}
您不会调用您的函数。
double square_root(double a, double b, double c); //send values to sqrt check double quad_x1(double b, double a, double c); //send values to get x1 double quad_x2(double b, double a, double c); //send values to get x2
这些是上面已经定义的函数的函数声明。它们绝对没有效果。函数不会被调用。
就好像你这样做了:
#include <iostream>
void f()
{
std::cout << "globaln";
}
int main()
{
void f(); // just a declaration, f() is not called
}
另一个问题是没有初始化main
的sq_a
、sq_b
、sq_c
、x1
和x2
变量。这些变量属于double
类型。因此,试图读取它们是未定义的行为,这意味着整个程序无效。
您似乎有一种误解,认为C++中的变量名总是全局的。但事实远非如此。你在main
中的x1
与quad_x1
中的x1
完全无关。你可能想做这样的事情:
x1 = quad_x1(b, a, c);
等等…
您应该从更简单的程序开始学习C++。调用一个函数并将结果存储在局部变量中是你能做的最基本的事情。在你做对之前不要处理二次方程。从一个使用函数将两个数字相加的程序开始。
相关文章:
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 显示错误输出的简单数组排序程序
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 如何从Windows应用程序输出到标准?
- 我写了一个C++程序来模拟Enigma机器.我没有得到输出
- 如何使用C++读取另一个程序中的源代码输出
- 为什么我的C++程序的程序集输出充满了 .ascii,没有汇编代码?
- 为什么这个程序的输出不如预期
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- C++ 每次运行程序时我都会"nan"输出的问题
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 而循环:简单的除法程序输出零,不明白为什么
- 如何在 html 页面中插入 cgi 应用程序的输出?
- C 中的输出程序无明显的原因是白色的
- C++:更改简单输出程序的字体
- C++ 简单的输入/输出程序 + 枚举器
- C++字母等效数字代码输出程序
- 编译输出程序集