2013-12-09 54 views
0

我想讓我的程序正確地讀取我的輸入文件,以下是我的輸入文件,第一列是我想要用戶輸入,然後值需要從相應的行中取出,但讀取的值是錯誤的。試圖讓我的程序正確讀取輸入文件二維數組

14,14,8,0.4%,16,2.0,1.7,如圖7所示,4.7,0.23,0.44,290,350

16,16,10,0.5%,17,2.2,1.8,8,5.4 ,0.27,0.5,310,370

18,18,11,0.5%,18,2.2,2.0,9,6.0,0.30,0.56,320,380

20,20,12,0.5%,19 ,2.3,2.2,9.5,6.4,0.32,0.59,330,390

22,22,13,0.5%,20,2.4,2.4,10,6.7,0.33,0.63,340,410

24,24,14,0.5,21,2.5,2.5,11,7.4,0.37,0.69,350,420

27,27,16,0.6,22,2.6,2.8,11.5,7.7,0.38 ,0.72,370,450

30,30,18,0.6%,23,2.7,3.0,12,8.0,0.40,0.75,380,460

35,35,21,0.6%,25,2.8 ,3.4,13,8.7,0.43,0.81,400,480

40,40,24,0.6%,26,2.9,3.8,14,9.4,0.47,0.88,420,500

45,45 ,27,0.6,27,3.1,3.8,15,10.0,0.50,0.9 4,440,520

50,50,30,0.6%,29,3.2,3.8,16,10.7,0.53,1.00,460,550

ifstream soft; 
    soft.open ("Softwood.txt"); //Opens the softwood text file which holds the values required for calculations 

cout <<"Please enter the strength class of the timber, excluding the letter." <<endl; 
cin >> type; 

float a [12][13]; //begins the array so the input file can be read 

int i, j; 

for (i=0; i<12; i++) 
{ 
    for (int j=0; j<13; j++) 
     soft>>a[i][j]; 
} 


int m=0; 

while(a[m][0]!= type && m<12) 
{ 
m++; 
} 
bendingStrength = a[m][1]; 
tensionParallel = a[m][2]; 
tensionPerpindicular = a[m][3]; 
compressionParallel = a[m][4]; 
compressionPerpindicular = a[m][5]; 
shearStrength = a[m][6]; 
elasticityParallel = a[m][7]; 
elasticityParallelFive = a[m][8]; 
elasticityPerpindicular = a[m][9]; 
shearModulus = a[m][10]; 
density = a[m][11]; 
meanDensity = a[m][12]; 
+0

只要想想它出錯的位置,並打印一些調試語句,對於初學者。 – keyser

+0

我注意到這是您在過去2-3天內發佈的這些問題的第三個問題。也許你需要重新思考你的程序是如何工作的。應該有可能提出一個更加動態的解決方案。 – caps

回答

0

讀取文件時應忽略逗號。它可以這樣實現:

for (i=0; i<12; i++) 
{ 
    for (int j=0; j<13; j++) 
    { 
     soft >> a[i][j]; 
     char ch; 
     soft.get(ch); 
     if(ch != ',') 
      soft.unget(); 
    } 
} 
+0

謝謝,我已經把這個,但它不承認ch'cin.get(ch);'? – user3077409

+0

@ user3077409對不起,我的錯:(我編輯了我的帖子,現在試試 –

+0

我剛剛試過這個,它似乎仍然在讀取值不正確,我會經過一遍,謝謝你的幫助! – user3077409

0
while(a[m][0]!= type && m<12) 
{ 
m++; 
} 

若m == 11,你的程序會增加m的值(現在是m == 12),並且你試圖將一個[12] [i](對於i在1和12之間)的值賦給一個對象。但是在C++的數組中,我們從0開始計算對象的數量,因此數組中最大的數字是[11] [12]。您的程序嘗試讀取不存在的對象的值。

相關問題