的最小數我有以下形式的一組數據:找到一組數據
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]。所以現在我完全失去了!)
如何保存一個點作爲參考點,以便將其與其餘數據進行比較,並且每次將其與較小的點進行比較時,它會變爲較小的值?
UPDATE:我通過考慮ref1 = Array [0] [2];出於for循環。
您使用'count'沒有被初始化。但是我沒有得到你所問的問題,你能再解釋一下嗎? – 2012-08-13 13:51:52
你是否檢查你是否正確讀取文件? – jrok 2012-08-13 13:52:28
你在每一個for循環中設置'point = i',不管是否它是最小或不是。刪除它 – acraig5075 2012-08-13 13:57:40