【发布时间】:2016-05-17 10:26:09
【问题描述】:
我正在尝试创建满足 3 个条件的代码:
1) x , y, z 是小于 1000 的正整数
2) x 总是小于 y
3) x^2 + y^2 = z^2
下面是我的带有“for”循环的代码:
#include <iostream>
using namespace std;
int main()
{
int x, y,z,i;
for(x=1,y=1,z=1,i=0;x<1000,y<1000,z<1000, x<y, x*x + y*y = z*z;x++,y++,z++)
{
cout << "x= " << x << "y= " << y << "z= " << z << endl;
i++;
}
cout << "There are " << i << "(x,y,z) triples satisfying x^2 + y^2 = z^2" ;
return 0;
}
我得到的错误是:
1. 错误:表达式不可赋值
2. 关系比较结果未使用
3. 表达式结果未使用。
我可以知道我的代码有什么问题吗?
假设我使用&& 而不是, 以满足3个条件并继续使用3个嵌套循环,逻辑会是什么?
谢谢你们。 我对代码进行了更改以包含 3 个嵌套循环,但是我可以找到的三元组的数量似乎与预期的错误一样。
#include <iostream>
using namespace std;
int main()
{ int counter = 0;
for (int x = 1; x != 1000; ++x, ++counter)
{
for (int y = 1; y != 1000; ++y)
{
for (int z = 1; z != 1000; ++z)
{
if (x*x+y*y==z*z && x<y)
cout << "x=" << x << " y=" << y << " z=" << z<< endl;
}
}
}
cout << "There are " << counter << " (x, y, z) triples satisfying x^2 + y^2 = z^2";
return 0;
}
初始化有问题吗?答案:878,我的答案:999
【问题讨论】:
-
你确定这会形成一个有效的条件表达式:
x<1000,y<1000,z<1000, x<y, x*x + y*y = z*z;??你是说x<1000 && y<1000 && z<1000 && x<y && x*x + y*y == z*z; -
表达式
x*x + y*y = z*z确实不是一个有效的赋值。您是否打算使用==检查是否相等? -
您正在寻找符合您条件的
&&,而不是,。 -
你需要三个嵌套的 for 循环。
-
x=1,y=1,z=1,i=0;xx + yy == z*z;x++,y++,z++ 改成这个了
标签: c++ for-loop conditional-statements codeblocks