这是一个非常简单的程序,我在这里写,但遇到了问题。 好吧,程序从文件中填充数组[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;
}
如果我想从数组的最后一个元素检查第二个元素呢?
P.S。对不起我的英语不好。如果有任何你无法理解的东西,请随时发表评论,我会尽力解释。提前谢谢。
答案 0 :(得分: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];
}
答案 1 :(得分: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]秒 构件?
答案是肯定的。
array = new 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
}
答案 2 :(得分:0)
是的,这是正确的,因为数组基于0
。例如,对于5 elements
数组,最后一个元素将是index 4 or array[4];