(c++)数组中的特定值

(C++) Specific values in an array

本文关键字:c++ 数组      更新时间:2023-10-16

我不确定如何命名我的问题,但这里开始。我正在测试一些功能,遇到了一个问题。

我想知道的是如何设置一个"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;
}

编辑:决定用矢量,不确定我是否能让它工作,但感谢反馈的家伙:)

由于您事先不知道有多少值符合条件,因此您应该使用std::vector

作为一个好处,它可以跟踪您已经添加了多少元素,因此push_back将始终使用下一个可用的索引。

也修复

cin >> n;
int DiviArray[n];

如果您只想将值放入与条件匹配的数组中,那么您应该只在条件匹配时将数字放入数组中。要做到这一点,将数字放入数组的语句必须位于条件的if块中。我希望我不需要解释为什么:)

这是程序中唯一需要两个索引的情况:一个索引在每次循环中递增(计算运行进程的次数),另一个索引仅在将数字放入数组时递增(以确定下一个数字的位置)。在其他任何地方,您都创建了一个完全无用的j变量(无用性应该从没有实际使用该值的代码中显而易见,只有设置它的代码)。