次の形式のデータセットがあります。
a1 b1 c1 d1
a2 b2 c2 d2
...
an bn cn dn
私の目標は、c列の値が最小の行を見つけることです。
私は次のことをしました:
const int limit=100000;
float Array[limit][4];
int main() {
double a, b, c, d, smallest, ref1, ref2;
ifstream in("data.dat");
int idx=-1, point;
while(!in.eof()) {
idx++;
in >> a >> b >> c >> d;
Array[idx][0]=a; Array[idx][1]=b; Array[idx][2]=c; Array[idx][3]=d;
} \\end of while
in.close();
int count=idx;
for(int i=1; i<count; i++) {
ref1= Array[0][2];
ref2 = Array[i][2];
if(ref2 < ref1) {ref1 = ref2; point=i;} //I thought this will save the smallest value
smallest = ref1; point= i;
} \\end for
cout << "point" << Array[point][0] << Array[point][1] << .. etc.
return 0;
}
ただし、出力はデータの最後のポイントでした。(この質問を入力した時点で、新しい行が読み取られるときにref1が常にArray [0] [2]になることに気付きました。したがって、今では完全に失われています!)
1つのポイントを参照ポイントとして保存して、残りのデータと比較し、小さいポイントと比較するたびに小さい値に変更するにはどうすればよいですか?
更新:ref1 = Array[0][2]を使用してこれを修正しました。forループから。