我不确定如何标题我的问题,但是这里有。我正在测试一些功能,我遇到了麻烦。
我想知道的是如何设置“for”或“if”语句只将值放在符合条件的数组中?例如,找到一个数字的每个除数,但只将因子放在数组中。
任何帮助都会被喜爱,如果需要可以提供源代码:)。是的,我是新人,所以要温柔!
#include <iostream>
using namespace std;
int main(){
int n;
int counter = 1;
cout << "What number would you like to use? ";
cin >> n;
int DiviArray[n];
for (int k=0,j=1;k<n;k++,j++)
{
DiviArray[k] = n-k;
}
int k = 3;
int factn[n];
cout << "Factors of " << n << ": " << endl;
for (int i=0, j=1;i<n;i++,j++)
{
factn[i] = n/DiviArray[i];
if(factn[i]*DiviArray[i]==n)
{
cout << counter << ". " << factn[i] << " x " << DiviArray[i] << endl;
counter++;
}
}
return 0;
}
编辑:决定使用矢量,不确定我是否可以使用它,但感谢您的反馈:)
答案 0 :(得分:1)
由于您事先并不知道有多少值符合条件,因此您应该使用std::vector
。
作为一项优势,它会跟踪您已添加的元素数量,因此push_back
将始终使用下一个可用的索引。
这也解决了
cin >> n;
int DiviArray[n];
这不是合法的C ++。
答案 1 :(得分:0)
如果您只想将值放入与条件匹配的数组中,则只应在条件匹配时将数字放入数组中。为此,将数字放入数组的语句必须位于条件的if块内。我希望我不需要解释原因:)。
这是你的程序中唯一一个你确实想要两个索引的时间:一个在循环中每次递增(计算运行过程的次数),另一个只在你放一个时增加数组中的数字(以确定下一个数字的位置)。在其他任何地方,你已经创建了一个完全无用的j
变量(由于没有实际使用该值的代码,只有代码来设置它,因此无用性应该很明显。)