0

これは私がここで書いている非常に単純なプログラムですが、問題が発生しました。さて、プログラムはファイルから配列[2000]を埋めてから、配列の2番目のメンバーと等しくない配列[i]をTYPE(cout)する​​必要があります。プログラムで配列の 2 番目のメンバーを指す方法がわかりません。ここにプログラムの一部があります:

#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;
}

配列の最後の要素から 2 番目の要素を確認したい場合はどうなりますか?

PS私の英語でごめんなさい。わからないことがありましたら、お気軽にコメントください。説明を試みます。前もって感謝します。

4

3 に答える 3

5

array[1] 2番目のメンバーですただし、ループ内で毎回ファイルを再度開いているという問題があります。

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])///これは正しいですか?array [1]は2番目のメンバーですか?

答えはイエスです。

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
}
于 2012-06-15T12:58:01.257 に答える
0

はい、配列が0ベースであるため、これは正しいです。たとえば5 elements、最後の要素の配列は次のようになります。index 4 or array[4];

于 2012-06-15T12:57:21.610 に答える