如何让C ++解决输入值的等式?

时间:2012-08-25 08:20:05

标签: c++

我很难找到一种方法,使用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 =输入..所以我怎么解决x + y =输入?另外我希望x和y介于列出的数字之间,这限制了这些输入之间的数字。但是在我的实际编码中,我用一个函数做了这个。

学校甚至开学了吗?不,它不是功课。我自己教C ++ .. - 肖恩霍尔特1分钟前编辑

如果x和y在函数中的指定值之间

,我只想尝试让计算机求解输入值的x / y的方法

4 个答案:

答案 0 :(得分:2)

看起来你认为C ++会为你解决方程式。它不会。 C ++是一种命令式的风格语言,它基于的概念,告诉它完全该做什么。

您必须弄清楚如何解决x和y,以便您可以制作算法。这个算法就是你制作程序的方法。

存在其他语言,您可以在某种意义上描述您想要的内容,并让编译器或运行时知道如何为您获取它。 C ++不是其中之一。

解决您的特定问题的不同方法是建立一个方程式系统并解决它。或者做暴力逼近并迭代x和y的值,以找出哪些值匹配。

答案 1 :(得分:1)

这看起来你有一个'数学'问题:一些受方程约束的值,你希望'计算机'找到适合约束(方程式)的所有可能值。我是对的吗?

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

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

答案 2 :(得分:0)

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

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关键字(迭代和选择的算法概念)。玩得开心!

答案 3 :(得分:0)

这种情况可以通过区间运算来解决。下面给出了解决“两个区间约束变量之和”问题的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 ++这样的通用编程语言需要你(或至少 您最终使用的库)非常具体如何解决 基于裸机的简单算术手段的问题。

虽然编程语言不会神奇,而且以某种方式做事 对你而言,存在解决许多数学标准问题的算法 例如,方程组。 Numerical Recipes in C++涵盖了各种各样的内容 算法及其C ++实现。