如何让C++求解输入值的方程式

How to have C++ solve the equation for an input value?

本文关键字:输入 方程式 C++      更新时间:2023-10-16

在给定格式的情况下,我一直在试图用C++找到一种方法来解决用户使用cin输入值,然后让计算机求解获得cin值的方法。下面写了一个超快的例子。。是的,我知道有很多代码缺失。。。但概念是存在的。。

int x;
int y;
int w;
int x = 30 < w < 50;
int y = 60 < w < 90;
cin >> input;
x + y = input;
cout << x;
cout << y;

当然,x+y不能在右边的左值上。所以我不能只写x+y=input。。那么我该如何让它求解x+y=input呢?此外,我希望x和y在列出的数字之间,这限制了这些输入之间的数字。。然而,在我实际的编码中,我使用了一个函数。

开学了吗?不,这不是家庭作业。我在自学C++…-Sean Holt 1分钟前编辑

不,我只是想找到一种方法,让计算机求解输入值的x/y,如果x和y在函数的指定值之间

看起来您认为C++将为您求解方程。不会的。C++是一种命令式语言,它基于告诉它该做什么的概念。

你必须弄清楚如何求解x和y,这样你才能制定一个算法。这个算法就是你制作程序的基础。

在其他语言中,你可以在某种意义上描述你想要什么,并让编译器或运行时为你找出如何获得它。C++不是其中之一。

解决特定问题的不同方法是建立一个方程组并求解。或者使用暴力方法,迭代x和y的值,以找出哪些值匹配。

这里似乎有一个"数学"问题:几个值受到方程的约束,你希望"计算机"找到所有符合约束(方程)的可能值。我说得对吗?

虽然有些计算机程序当然可以做到这一点,但C++语言并不是为此而设计的。C++的作用是为您提供一种向处理器发出指令的方式,比如"将此值存储在内存中"或"将这两个数字相加"。但是没有办法说"解决这个数学问题"。

你需要的是一些方程求解器。但我对任何一个都不熟悉。有像Matlab或Mathematica这样的工具。但我不认为他们是免费的。

如果你想用算法解决数学问题,这里有一个伪代码中的暴力思想:

Input a number.
for each value x between 30 and 50
  for each value y between 60 and 90
    if x+y equals the number
      print x and y

现在,您可以拿起一本好书或教程,用C++编写代码。在教材中查找forif关键字(迭代和选择的算法概念)。玩得高兴

这种情况可以通过区间算术简单地解决。下面给出了解决"两个区间约束变量之和问题"的C++代码。

int min_x = 30, max_x = 50;
int min_y = 60, max_y = 90;
// solutions exist in this interval
int min_z = min_x + min_y, max_z = max_x + max_y;
cin >> input;
// solutions possible?
if (input >= min_z && input <= max_z)
{
    // determine solution interval for x (y is dependent)
    cout
    << "Solution:n"
    << "x in [" << min(max(  input - max_y  , min_x),max_x)
    << ";"      << min(max(  input - min_y  , min_x),max_x) << "], "
    << "y = "   << input << " - x" << endl;
}
else
{
    cout << "No solution." << endl;
}

计算机"基本上是愚蠢的",如果它们做了聪明的事情,那就是软件。使用像C++这样的通用编程语言需要您(或者至少您最终使用的库)非常具体地说明如何解决基于裸计算机的简单算术方法的问题。

尽管编程语言不会神奇地和以某种方式做事情对你来说,算法的存在可以解决许多数学标准问题,比如例如方程组。C++中的数字食谱涵盖了各种算法及其C++实现。