简体   繁体   English

我无法让程序正确读取输入文件中的值(2D数组)

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

My program reads the values for this incorrectly.. There is the same problem with when I try to get the values from this infile: 我的程序错误地读取了这个值。当我尝试从这个infile获取值时,存在同样的问题:

14, 14, 8, 0.4, 16, 2.0, 1.7, 7, 4.7, 0.23, 0.44, 290, 350 14,14,8,4.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 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 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 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 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 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 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 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 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 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 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 50,50,30,0.6,29,3.2,3.8,16,10.7,0.53,1.00,460,550

into this code 进入这段代码

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

The above might work if there were no commas in-between every number , however, your file (at least the one posted above) has all of the values separated by a comma..I believe this is messing up your ability to read in the correct values..(also not sure why you declare int i; ) 如果每个数字之间没有逗号,则上述情况可能有效,但是,您的文件(至少上面发布的文件)的所有值都用逗号分隔。我相信这会弄乱您的阅读能力。正确的值..(也不确定为什么你声明int i;

Try code below as an alternative.. 请尝试以下代码作为替代..

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

The second part of your question has the same problems really...you arn't taking into account the commas... You have like before.. 你的问题的第二部分确实有同样的问题...你没有考虑到逗号...你以前喜欢..

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

You should have... 你应该有...

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