簡體   English   中英

我無法讓程序正確讀取輸入文件中的值(2D數組)

[英]I can't get my program to read the values from my input file correctly (2D array)

我的程序錯誤地讀取了這個值。當我嘗試從這個infile獲取值時,存在同樣的問題:

14,14,8,4.4,16,2.0,1.7,7,4.7,0.23,0.44,290,350

16,16,10,5,0,17,2.2,1.8,8,4.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];
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;

請嘗試以下代碼作為替代..

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

你的問題的第二部分確實有同樣的問題...你沒有考慮到逗號...你以前喜歡..

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM