C++ 离散数学C++;

C++ 离散数学C++;,c++,discrete-mathematics,C++,Discrete Mathematics,x^2+y^2=Z^2。如何在代码中测试毕达哥拉斯定理的真实性?我的作业是读入10个整数,然后用这10个整数中的每一个测试语句是否正确。这就是我所拥有的,但我不确定它是否正确,因为我不确定我是否解决了z 谢谢你的帮助 void ESearch(int array[], int size) { int trueCount = 0; //int falseCount = 0; for(int i = 0; i < size; ++i) { for(int j = 0; j <

x^2+y^2=Z^2。如何在代码中测试毕达哥拉斯定理的真实性?我的作业是读入10个整数,然后用这10个整数中的每一个测试语句是否正确。这就是我所拥有的,但我不确定它是否正确,因为我不确定我是否解决了z

谢谢你的帮助

void ESearch(int array[], int size)
{
int trueCount = 0;
//int falseCount = 0;

for(int i = 0; i < size; ++i)
{
    for(int j = 0; j < size; ++j)
    {

        int x = array[i];
        int y = array[j];

        int z = sqrt(pow(x, 2)+ pow(y, 2));

        if(z == x || y)
        {
            ++trueCount;
        }

    }


}
if(trueCount > 0) cout << "\nE is TRUE"; else cout << "\nE is FALSE";

 }
void ESearch(int数组[],int大小)
{
int-trueCount=0;
//int-falsecont=0;
对于(int i=0;i如果(trueCount>0)无法您的代码将无法按您想要的方式工作。请尝试此方法。您的数据量非常小,因此很可能您不太关心效率,但我编写了一些简单的(还不是最有效的)使用STL的解决方案。定义一个向量并对其排序一次,以便在需要检查对
(x,y)
是否满足输入数据中其他整数的Pyth.定理时使用二进制搜索。它需要
log(size)
,因此即使对于大数据输入,它也应该相当快。 另外,您不需要从数据的开头开始运行第二个循环,因为您之前已经在检查同一对,但顺序不同。 代码应该相当简单,但是如果您有任何问题,请询问。祝您好运

void ESearch(int array[], int size)
{

int trueCount = 0;
std::vector<int> z(array, array + size);
std::sort(z.begin(), z.end());

int x, y;
double z_check;

for(int i = 0; i < size; i++)
{
    x = array[i];

    for(int j = i+1; j < size; j++)
    {
        y = array[j];

        z_check = sqrt(x*x + y*y);

        if(std::binary_search(z.begin(), z.end(), z_check))
        {
            trueCount++;
        }

    }
}
z.clear();
if(trueCount > 0) cout << trueCount; else cout << "\nE is FALSE";
}

如果你要否决投票,至少告诉我为什么。你的
trueCount
增加的几率很低。而且,我不确定我是在解z-还是你在寻找,但你有10个整数作为输入。如何将它们配对以使其有意义?
if(z==x | | y)
可能不会像你想象的那样做。要测试毕达哥拉斯定理,你需要有三个整数z>y>=x,并检查
如果(z*z==y*y+x*x)
。不确定如何从十个数字中选择三个。也许可以尝试所有的组合?谢谢。我最后尝试了所有的组合来寻找三个数字,因为我觉得输入的十个数字不足以在pytho上进行测试。但这真的很酷
if(std::binary_search(z.begin() + ceil(z_check), z.end(), z_check))