gpt4 book ai didi

c++ - 使用数组查找 HCF,得到未知输出 (C++)

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:58 26 4
gpt4 key购买 nike

所以无论我输入什么,我最后一次输出时都会得到结果 176。
我的逻辑是我可以制作一个 Array(comfactors) 并在其中放置公因数。之后,我取最大的数放在comfactors[0]中输出。
如果其他人有任何其他建议,请告诉。一直在寻找学习。

#include <iostream>
using namespace std;
typedef int integer;
void generate_factors(integer factor1[], int a, integer factor2[], int b);
void findHCF(int[], int[], int, int);
int main()
{
int x, y;

cout << "Enter first integer: " << endl;
cin >> x;

cout << "Enter second integer: " << endl;
cin >> y;



integer *integerArray1 = new integer[x], *integerArray2 = new integer[y];

generate_factors(integerArray1, x, integerArray2, y);
findHCF(integerArray1, integerArray2, x, y);

return 0;
}

void generate_factors(integer factor1[], int a, integer factor2[], int b)
{
int i, j;
cout << "\n" << endl;
cout << "Factors of " << a << " are: " << endl;
for (i = 1; i <= a; i++)
{
if ((a%i) == 0)
{
factor1[i - 1] = i;
cout << factor1[i - 1] << " ";
}

}

cout << "\n" << endl;

cout << "Factors of " << b << " are: " << endl;
for (j = 1; j <= b; j++)
{
if ((b%j) == 0)
{
factor2[j - 1] = j;
cout << factor2[j - 1] << " ";
}

}


}

void findHCF(integer Array1[], integer Array2[], int a, int b)
{
int i, j, k;
int comfactors[1024];

for (i = 0; i <= a; i++)
{
for(j = 0; j <= b; j++)
{

if (Array1[j] == Array2[i])
{
comfactors[i] = i;
}

}

}


for (k = 0;k < a+b; ++k)
{
if (comfactors[0] < comfactors[k])
{
comfactors[0] = comfactors[k];}
}
cout << "\n\nThe Highest Common Factor is " << comfactors[0];
}

最佳答案

你得到了错误的答案,因为这里你的数组在随机点填充了 garbade 值, 例如,在您的函数 generate_factors 中,只有满足条件的那些点才会被填充。因此,当您在函数 findHCF 中搜索公共(public)值时,这些垃圾值就会出现并导致意外输出的发生。所以你应该用 1 初始化数组

尽管计算两个数的 HCF 的一种简单方法是使用 Euclid 算法

这是欧几里德算法在 C++ 中的实现:

int hcf(int a, int b) {
if (b == 0) {
return a;
} else {
return hcf(b, a % b);
}
}

关于c++ - 使用数组查找 HCF,得到未知输出 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47565456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com