I can't get my program to read the values from

2019-03-01 06:35发布

问题:

My program reads the values for this incorrectly.. There is the same problem with when I try to get the values from this 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

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

回答1:

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

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