使用数组求解方程
using arrays to solve an equation
所以我用 C++ 编写了这段代码来解决这个方程 (x+y+z=30),其中每个变量都有有限数量的可能值 (1,3,5,7,9,11,13,15),所以允许重复,这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int x[8]={1,3,5,7,9,11,13,15};
int y[8]={1,3,5,7,9,11,13,15};
int z[8]={1,3,5,7,9,11,13,15};
for (int i=0; i<8; i++)
{
for (int j=0; j<8; j++)
{
for (int k=0; k<8; j++)
{
if (x[i]+y[j]+z[k]==30)
{
cout << x[i] << "n" << y[j] << "n" << z[k]<< "n"<< endl;
break;
}
}
}
}
}
现在我不知道这是否是正确的方法(我是初学者),但这个程序仍然做得很好,因为它给出了三个等于 30 的数字集,但它没有坚持可能的值,例如 (7,22,1),现在你在那里看到的是最好的,我可以想出其他尝试或修复只是让事情变得更糟,例如崩溃或其他什么。如果你能帮忙,那就太好了,最重要的是告诉我我哪里出错了,因为这样做的全部目的是学习而不是解决问题。提前非常感谢!
您正在使用仅中断其中一个循环的 break 语句。你的程序中有嵌套循环,所以我建议你改用goto:。
for (int i=0; i<8; i++)
{
for (int j=0; j<8; j++)
{
for (int k=0; k<8; j++)<----- it should be k++
{
if (x[i]+y[j]+z[k]==30)
{
goto stop;
}
}
}
}
stop:
cout << x[i] << "n" << y[j] << "n" << z[k]<< "n"<< endl;
我实际上运行了代码,还有 2 个问题:
- 正如下面的答案所述,3 个奇数加起来永远不会等于 30;
- 变量 I、j 和 k 必须是全局变量。因此,在循环使用之前初始化它们。那么它应该可以完美地工作(如果数字不均匀)。
我在初始化数组时使用的值中没有看到 22。您也可以只使用一个具有可能值的数组;不需要 3 个数组。
我看到您只有奇数整数作为可能的值。 3 个奇数整数永远无法求和为像 30 这样的偶数,因此无法解决您的问题。您提供的一个解决方案将 22 作为一个值,一个偶数整数。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '