以相反的顺序打印数组,避免重复c ++

时间:2016-12-23 08:18:17

标签: c++

所以,我必须以相反的顺序打印出我的数组,避免重复。 代码工作正常,除了一个错误: 输出必须是:

100000
9995
992
22
14

打印到屏幕

-292742
100000
9995
992
22
14

这第一个垃圾价值来自哪里,我不知道。我认为错误在于这个特定的功能,但我不知道在哪里。我需要避免这种垃圾值。其余的实现工作完美。

int last;
    int count = 0;
    for(int i = lengthOfArray-1; i >=0; i--){
        if(last == arr[i]){
            ++count;
        }else{
        cout << last << endl;
        count = 1;
        }
        last = arr[i];
    }
     if (count > 0) {
        cout << last << endl;
    }

3 个答案:

答案 0 :(得分:1)

您应该初始化last,否则会被垃圾填满,根据您的逻辑,它会打印last

int last = arr[lengthOfArray-1];
int count = 0;
for(int i = lengthOfArray-1; i >=0; i--){
    if(last == arr[i]){
        ++count;
    } else{
        cout << last << endl;
        count = 1;
    }
    last = arr[i];
}
if (count > 0) {
    cout << last << endl;
}

答案 1 :(得分:0)

您正在使用未初始化的值(last)并首先将其与arr[i]进行比较,然后在不等于a[i]时将其输出。使用未初始化的值将是未定义的行为。在这种情况下,最后恰好被初始化为-292742,这解释了输出。

答案 2 :(得分:0)

else{
    last = arr[i];
    cout << last << endl;
    count = 1;
}

你的其他声明应该是这样的