2014-03-29 51 views
-1

我剛開始製作矩陣計算器,很沮喪地遇到問題這麼早。 我正在製作一個3x3矩陣計算器,並且在向數組輸入值時出現問題,就我所知,直到「cin matrix [2] [2];」當我得到一個錯誤「運行時檢查失敗#2 - 圍繞變量'矩陣'堆棧被破壞。」我的猜測是我輸入數組外,所以它是未定義的,但我不明白我是如何,謝謝任何幫助。基本的C++錯誤。運行時檢查失敗#2 - 圍繞變量「矩陣」的堆棧已損壞

#include <iostream> 
#include <conio.h> 

using namespace std; 

int main() 
{ 
    double matrix[2][2]; 

    for(int i=0;i<=2;i++) 
{ 
    for(int j=0;j<=2;j++) 
    { 
     cout<<"Enter value: ["<<i+1<<"]["<<j+1<<"] of your 3x3 vector.\n"; 
     cin>>matrix[i][j]; 
    } 
} 
    cout<<matrix[1][2]; 

    cin.get(); 

    return 0; 
} 
+0

聲明你的矩陣[3] [3] –

+0

太愚蠢了,我知道錯誤的原因,但仍然看不到它。感謝您的幫助,我明白爲什麼。雖然第一個索引是0,但它仍然必須聲明爲3x3。再次感謝。 – user3475761

回答

0

在C數組的索引++(事實上在許多編程語言)從0.But開始時你指定你不從0.So算它的大小應該是─

double matrix[3][3]; 
0

如果陣列具有N個元件然後索引的有效範圍是[0, N-1]所以你的情況當N等於2個索引的有效範圍將是[0,1]。

因此,如果你想有一個3×3的二維陣列,然後元件以3的數量N必須等於和指數的有效範圍將是[0,2]

因此用C/C++中通常使用以下條件中的環路

for (int i = 0; i < N; i++) 

與範圍的嘗試始終使用符號的名稱爲陣列的尺寸對不犯一些錯誤。例如

#include <iostream> 
#include <conio.h> 

using namespace std; 

int main() 
{ 
    const int N = 3; 
    double matrix[N][N]; 

    for (int i = 0; i < N; i++) 
    { 
     for (int j = 0; j < N; j++) 
     { 
     cout< << "Enter value: [" << i+1 << "][" << j+1 << "] of your " 
       << N << 'x' << N << " vector.\n"; 
     cin>>matrix[i][j]; 
     } 
    } 

    cout << matrix[1][2]; 

    cin.get(); 

    return 0; 
} 
相關問題