Почему отображается только одна строка моего кода? - PullRequest
0 голосов
/ 08 апреля 2019

Я пытаюсь прочитать из моего файла (salsa2.txt), и отображается только одна строка из него? мой текстовый файл выглядит так:

Sweet and Spicy
1856.43   386.54   785.34  1043.60
Chunky
 847.50  1290.54  1506.80   899.65
Pico de Gallo
1092.65   689.54   987.65   1024.35
Salsa Con Queso
5698.54  7699.54  2345.67   2956.87
Restaurant Style
6758.43  8493.99  2098.54   3905.64

Вот мой код:

const int salsa_type = 5;   //Number of salsa types for rows
const int qurt = 4;         //Number of quarters for columns

bool readFile(string namesArray[], float ary2d[][qurt])                      //bool to return false or true if the data is less than 0
{
    float data;
    int i = 0;
    ifstream inFile;
    inFile.open("salsa2.txt");

    if(!inFile)
    {
        cout << "Error opening data file!\n";
        return false;                                   //returns false then returns to main to end program
    }

    cout << "Reading from data file. \n" << endl;

        for (int r = 0; r < salsa_type; r++)
        {
            getline(inFile, namesArray[r]);

            for (int c = 0; c < qurt; c++)
            {
                inFile >> data;
                ary2d[r][c] = inputValidation(data);        //Checking input before adding into index and will also move to the inputValidation prototype to double check
            }
        }

    inFile.close();

    return true;                                        //returns true then traces back into main function to complete calculations
}
.....
void readData(string namesArray[], float ary2d[][qurt], const float row_total[],
       int row, float col_total[], float total)
{

    cout << fixed << setprecision(2);

    cout << setw(45) << "Chips & Salsa\n" << endl;
    cout << setw(206) << "Quarter 1     Quarter 2    Quarter 3    Quarter 4    Type Totals" << endl;        //Printing the number of columns on the top

    for (int r = 0; r < row; r++)
    {
        cout << endl << namesArray[r] << ": ";

        for (int c = 0; c < qurt; c++)
        {
            cout << setw(13) << ary2d[r][c];                                                    //Has the data set spaced out evenly
        }

        cout << setw(15) << row_total[r];
        cout << endl;
    }

    cout << endl;

    cout << "Quarter totals: ";                                                     //Aligning row totals on the right side of the "table"

    //print total output for numbers
    for(int i=0; i < qurt; i++)
        cout << fixed << setw(13) << col_total[i];                                                   //Aligning column totals across the bottom of the "table"

    cout << endl;
    cout << endl << setw(73) << "Overall Total: " << setw(11) << total << endl;                                 //Aligning total to match the total for columns
}

Как это должно выглядеть за вычетом общей суммы и т. Д.

Sweet and Spicy        1856.43   386.54   785.34   1043.60
Chunky                  847.50  1290.54  1506.80    899.65
Pico de Gallo          1092.65   689.54   987.65   1024.35
Salsa Con Queso        5698.54  7699.54  2345.67   2956.87
Restaurant Style       6758.43  8493.99  2098.54   3905.64

1 Ответ

0 голосов
/ 08 апреля 2019

Я попробовал другой способ решить эту проблему, и это сработало. Итак, я написал:

    for (int r = 0; r < salsa_type; r++)
 { 
       getline(inFile, namesArray[r]); 
       for (int c = 0; c < qurt; c++) 
      { 
         inFile >> data; ary2d[r][c] = inputValidation(data); 
      } 
     inFile.clear(); 
     inFile.ignore(1000,'\n');
 } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...