一个求二次方程的x值的程序
A program to find the x values of a quadratic equation
给定a=1, b=5和c=6的值,x的值应该是-2和3,但下面的程序给出x的值为6和-11,这是不正确的。如果有人能指出这个程序出了什么问题,我将不胜感激。
#include<iostream.h>
#include<conio.h>
int main()
{
char reply;
int a,b,c,q,z;
do
{
cout<<"Enter the value of a: ";
cin>>a;
cout<<"nEnter the value of b: ";
cin>>b;
cout<<"nEnter the value of c: ";
cin>>c;
q=(-b-(b*b-4*a*c)sqrt(b))/2/a;
z=(-b+(b*b-4*a*c)sqrt(b))/2/a;
cout<<"nThe values of x are "<<q<<" and "<<z;
cout<<"nDo you want to find another values of x(y/n)?";
cin>>reply;
}
while(reply=='y');
getch();
return 0;
}
^
符号实际上是位异或运算符,而不是幂或指数运算符,因此b^2
实际上是b xor 2
。试试b*b
吧。
如果你需要取一个底数为2以外的幂指数,你需要使用pow
函数。
并使用sqrt
函数(在<math.h>
中)来计算平方根,而不是将数字提高到1/2的幂。
另外,a/b*c
被解析为(a/b)*c
,所以您需要括号:
(...)/(2*a);
或做第二次分割:
(...)/2/a;
变化
q=(-b-(b^2-4*a*c)^1/2)/2*a;
z=(-b+(b^2-4*a*c)^1/2)/2*a;
q=(-b-(b^2-4*a*c)^1/2)/2/a;
z=(-b+(b^2-4*a*c)^1/2)/2/a;
之后,将b^2
更改为b*b
(^
是xor
,而不是power)和b^1/2
到sqrt(b)
.
然后,用double
代替int
。
首先,将所有的数据类型更改为double
,否则1/2
会给出0
而不是0.5
。
<cmath>
头文件中的std::sqrt
。则回忆公式,并正确计算。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 编写一个程序来计算以下二次方程:
- 二次方程程序
- 二次方程程序输出数
- 一个求二次方程的x值的程序