2013-12-09 17 views
1

我的程序錯誤地讀取了這個值。 當我嘗試從此infile獲取值時存在相同的問題:我無法讓我的程序正確讀取輸入文件中的值(二維數組)

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.94,440,520

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

到這個代碼

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]; 

回答

3
float a [6][13]; // Begins the array to read the values from the hardwood file 

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

以上可能工作,如果有在每個數字之間沒有逗號,但是,您的文件(至少是上面發佈的那個文件)的所有值都以逗號分隔。我相信這會搞亂您讀取正確值的能力..(也不是知道你爲什麼聲明int i;)以下

try代碼作爲替代..

float a [6][13]; // Begins the array to read the values from the hardwood file 

float value; 
char comma; 
for (i=0; i<6; i++) 
{ 
    for (int j=0; j<13; j++){ 
     hard>>std::ws>>value; //get value from file ignoring whitespace 
     a[i][j] = value; 
     hard>>std::ws>>comma; //ignore commas and whitespace 
    } 
} 

你問題的第二部分具有相同的問題,真的...你arn't考慮到逗號.. 。你曾經喜歡過...

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]; 
} 

你應該已經......

float a [12][13]; // Begins the array to read the values from the hardwood file 

float value; 
char comma; 
for (i=0; i<12; i++) 
{ 
    for (int j=0; j<13; j++){ 
     soft>>std::ws>>value; //get value from file ignoring whitespace 
     a[i][j] = value; 
     if(j != 12){ //dont ignore the comma for last entry on line bc no comma there 
     soft>>std::ws>>comma; //ignore commas and whitespace 
     } 
    } 
} 
+0

最好的,對於閱讀的那部分程序的作品,然後我試圖把它轉移到程序,它是相似,但輸入文件有多個值的另一部分,但它沒有工作,這就是程序的一部分! float a [12] [13]; //開始數組以便輸入文件可以被讀取 \t int i,j; \t爲(I = 0; I <12;我++) \t { \t \t對(INT J = 0;Ĵ<13; J ++) \t \t \t軟>> A [i] [j]; \t} \t \t int m = 0; while(a [m] [0]!= type && m <12) { m ++; } – user3077409

+0

等等,這沒有妥當出來,我會編輯我的問題。抱歉! – user3077409

+0

很高興能夠提供幫助,我很樂意提供更多幫助,但有幾件事情,首先,您應該接受一個答案,以獎勵幫助您的人,因爲我確實解決了您的原始問題;其次,最好能夠幫助您完成另一個問題如果您單獨發佈該問題或在第一個問題的代碼下添加代碼以便查看此問題的人可以看到原始問題是什麼 –

相關問題