下面代码的目的是获取用户输入的变量(a 和 c),将它们相乘 (a*c),找到这个数字的因数,然后找出这些因数中哪些加起来等于另一个用户输入的变量(在这种情况下,b)。出于某种原因,它没有正确编译,我不明白为什么。当我尝试使用命令 cout << sum1 << endl << sum2 << endl;
它显示狂野的、不可预测的数字。谁能告诉我我的代码是否有问题?这也是一个 void 函数,它将值 sum1 和 sum2(在函数中创建)返回给 main。变量 a、b、c 和 f[] 都定义在 main 中。这是函数声明:
void findFactors(int, int, int, int[], int&, int&);
以及函数本身:
void findFactors(int a, int b, int c, int f[], int& sum1, int& sum2)
{
int j=0;
int mult=a*c;
int i, z=j, temp;
for(i=1; i<=mult; i++)
{
if(mult%i==0)
{
f[j]=i;
j++;
}
}
for(j=0; j>=0; j--)
{
temp=mult/f[j];
if(temp+f[z]==b || temp-f[z]==b || f[z]-temp==b)
{
sum1 = f[z];
sum2 = temp;
}
}
}
如果有人能帮助我,我将不胜感激。谢谢:)
最佳答案
void findFactors(int a, int b, int c, int f[], int& sum1, int& sum2)
{
int j=0;
int mult=a*c;
int i, z=j, temp; // here z == 0
for(i = 1; i <= mult; i++)
{
if(mult % i == 0)
{
f[j] = i; // Any # % 1 == 0, so f[0] = 1
j++; // note: z is still == 0 here
}
}
for(j = 0; j >= 0; j--) // This loop executes only once
{
temp = mult / f[j]; // f[0] == 1, so temp == mult here
// since z==0 here, f[0] == 1
// so only if: b == (temp + 1) || (temp - 1) || (1 - temp)
if(temp + f[z] == b || temp - f[z] == b || f[z] - temp == b)
{
sum1 = f[z]; // z is still 0, so f[0] is 1, sum1 == 1
sum2 = temp; // temp == mult here, so sum2 == mult
}
}
}
不确定此函数是否按您预期的方式工作,但除非满足变量 b
的条件,否则 sum1
和 sum2
永远不会被设置,如果它们是,sum1
应该被设置为 1
,sum2
应该被设置为 temp
或 mult
关于c++ - 获取大小由变量定义的数组变量以进行赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195370/