0

这是我在这里编写的一个非常简单的程序,但遇到了问题。好吧,程序从文件中填充数组 [2000],然后它应该 TYPE(cout) 不等于数组的第二个成员的数组 [i]。我不确定如何指向程序中数组的第二个成员。这是一段程序:

#include <iostream>
#include <fstream>

using namespace std;
const int N=2000;

int main() {
    int* array;
    array = new int[N];

    for (int i=0; i<N; i++){
        ifstream ifs("reals.txt");
        ifs>>array[i];
    }

    for (int i=0; i<N; i++){
        if(array[i] != array[1])   /// is this right? is array[1] second member? 
            cout<<array[i]<<'\t';
        if((i+1)%13) cout<<endl;
    }
    system("pause");
    return 0;
}

如果我想从数组的最后一个元素中检查第二个元素,那会怎样?

PS对不起我的英语。如果有什么你不明白的,请随时评论,我会尽力解释。提前致谢。

4

3 回答 3

5

array[1] 第二个成员。但是,您的问题是您每次在循环中都重新打开文件:

for (int i=0; i<N; i++){
    ifstream ifs("reals.txt");
    ifs>>array[i];
}

您需要在循环之前打开文件:

ifstream ifs("reals.txt");
for (int i=0; i<N; i++){
    ifs>>array[i];
}
于 2012-06-15T12:57:14.433 回答
1
for (int i=0; i<N; i++){
    ifstream ifs("reals.txt");
    ifs>>array[i];
}

应该

ifstream ifs("reals.txt");
for (int i=0; i<N; i++){        
    ifs>>array[i];
}

if(array[i] != array[1]) /// 这是对的吗?数组[1] 是第二个成员吗?

答案是肯定的。

数组 = 新的 int[N];

不要忘记

delete[] array;

如果你想访问 prelast 元素,在标准库中有一个用于你的数组的替换:

#include <vector>

int main(){
  std::vector<int> array(1000);
  array[998]= 42;
  int prelast= *(array.end()- 2); // end() is an iterator to one-past the last element
}
于 2012-06-15T12:58:01.257 回答
0

是的,这是正确的,因为数组是0基于的。例如,5 elements最后一个元素的数组将是index 4 or array[4];

于 2012-06-15T12:57:21.610 回答