-1

我一直在试图找出一种使用 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 的方法

4

4 回答 4

2

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

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

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

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

于 2012-08-25T08:49:52.673 回答
1

看起来您在这里有一个“数学”问题:几个受方程式约束的值,并且您希望“计算机”找到适合约束(方程式)的所有可能值。我对吗?

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

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

于 2012-08-25T08:51:07.743 回答
0

This case can be solved trivially by interval arithmetic. C++ code that solves your "sum of two interval-constrained variables problem" is given below.

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;
}

Computers are "basically stupid" and if they do smart things it is the software. Using a general purpose programming language like C++ requires you (or at least the libraries you eventually use) to be very specific on how exactly to solve a problem based on the simple arithmetic means of the bare computer.

Although the programming language won't magically and somehow do things for you, algorithms exist to solve many mathematical standard problems such as e.g. systems of equations. Numerical Recipes in C++ covers a variety of algorithms and their C++ implementations.

于 2012-08-31T07:31:36.077 回答
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++ 代码。在您的教材中寻找for和关键字(迭代和选择的算法概念)。if玩得开心!

于 2012-08-25T09:36:44.160 回答