找到方程的根
Finding roots of an equation
本文关键字:方程 更新时间:2023-10-16
>我正在尝试用C++定义算法,但有一个我无法理解的错误我希望我的算法找到二阶方程的根,并以列表的形式给我解决方案......
我已经定义了nbRacines
它给出了根的数量并且它工作正常。所以这是我的定义...
list<float> Racines (float a,float b, float c)
{
float discr=b*b-4*a*c;
float li={};
if (nbRacines(a,b,c)==2)
{
li={((-b-sqrt(discr)/2*a),((-b-sqrt(discr)/2*a)))};
}
if (nbRacines(a,b,c)==1)
{
li={(-b/2*a)};
}
return li;
}
它给出了这个错误...
$ g++ -Wall -pedantic -std=c++0x -c -Werror definitionsFonctions.cpp
definitionsFonctions.cpp: In function ‘std::__cxx11::list<float>
Racines(float, float, float)’:
`definitionsFonctions.cpp:269:10: error: could not convert ‘li’ from ‘float’ to
‘std::__cxx11::list<float>’
return li;
^~
Makefile:8: recipe for target 'definitionsFonctions.o' failed
make: *** [definitionsFonctions.o] Error 1
你有一个声明float li
的对象,并尝试将其用作函数的返回值。您还可以尝试为其分配一系列值。这将不起作用,并且将使用operator,
而不是您想要的。要修复它,请直接返回列表:
std::vector<float> Racines (float a, float b, float c)
{
float discr=b*b-4*a*c;
switch(nbRacines(a,b,c))
{
case 2: return {-b-sqrt(discr)/2*a, -b-sqrt(discr)/2*a};
case 1: return {-b/2*a};
throw std::logic_error("quadratic equations have two roots");
}
}
算术注释1:所有二次方程都有两个根,有些只有两个相等的根
算术注释2:我认为您的意思是将-b+sqrt(discr)/2*a
作为两个元素列表的元素之一返回
样式说明:std::vector
是比 std::list
更好的默认容器。仅当需要list
属性(缺少引用失效)时,才应使用。
相关文章:
- 正弦级数方程计算不正确
- 线性丢番图方程 - 求给定区间内的解数和解
- 这个方程 x + y = x & y + x |y 成立(假设 x, y > 0)?
- 尝试创建包含简单方程的函数
- 我正在尝试根据 4 个方程找出六个值
- 在 // C++注释中使用 \\ 是否合法?(C++评论中的LaTeX方程)
- 我正在尝试在 C++ 中做一个方程,但它一直输出 1
- 查找满足浮点不等式方程的最小整数
- 用蛮力解方程
- 给定方程 : x = (((x+8)/3)%5)*5;使用赋值运算符求解上述方程(例如 +=, -=, *=)
- 为什么同一个逻辑方程在python和c++中返回两个不同的结果
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- C++ 递减和显示活动方程
- 在C++中使用RK-4求解洛伦兹方程
- 如何从用户那里获取方程的输入并在 c++ 中对其进行评估
- 如何使用OpenACC集成微分方程
- C++四元数方程程序
- 使用基本 do-while 循环求解泊松方程
- 如何将 MATLAB 长线方程转换为 C++
- 检测到堆栈粉碎C++.求解拉普拉斯方程