2013-07-21 97 views
-2
int main() 
{ 
    int n, inInt; 
    vector <int> list; 
    ifstream ifs("1.txt"); 
    float a; 
    ifs >> a; 
    std::vector<int> result; 
    int temp; 

    while(! ifs.eof()) 
    { 
     ifs >> temp; 
     result.push_back(temp); 
    } 

    int b; 
    b = result.size(); 
    float array[b+1]; 
    int i; 
    array[0] = a; 

    for(i = 1;i < b+1;i++) { 
     array[i] = (array[i-1] + result[i]-2*array[i-1] * result[i]/a); 
    } 
    cout << array[b]; 

    system("pause"); 
    return 0;} 

基本上在我的代碼中,我構建了一個向量並構建一個數組,並嘗試使用數組中的向量中的數據。但是,當我編寫代碼時,它給了我一個巨大的錯誤數。C++矢量數組錯誤

+3

請不要修改你的問題,使現有的答案是錯誤的。如果答案解決了最初的問題,但是您遇到了一個無法解決的新問題,請發佈一個新問題。 – ChrisF

回答

2

temp不是數組,temp是int。你試圖在int上使用operator[],你不能這樣做。此外,VLA(可變長度陣列)是GCC的延伸,因此不是標準。我建議你更換這行:

float array[b+1]; 

有了:

std::vector<float> array(b+1); 
+0

抱歉我對vector.Then數組[i] =(array [i-1] + result [i] -2 * array [i-1] * result [i]/a)不是很熟悉。我如何編輯這部分? – user2604063

+0

你不需要。向量就像數組一樣工作,不同的是它們可以改變大小並管理自己的內存(等等)。運算符[]就像處理數組一樣處理向量。 – Borgleader

+0

std :: vector array(b + 1)...?這是一個數組還是一個向量...? – user2604063

0

我看到至少有兩個問題。首先,your input loop is incorrect並在result中插入無效條目。您可以通過以下輸入迴路解決這個問題:

while (ifs >> temp) 
{ 
    result.push_back(temp); 
} 

二,矢量result包含b元素,因此有效的指標是[0..b-1]。您的循環結束條件i < b+1將讀取result末尾的一個元素。我想你可以這樣做,而不是解決這個問題:

for(i = 0; i < b; i++) 
{ 
    array[i+1] = (array[i] + result[i]-2*array[i] * result[i]/a); 
} 

當我做了這些變化,並使用3 2 2輸入,輸出爲1.66667

+0

Thx真的很多! – user2604063