C ++: Векторы структур и их прохождение - Ошибка: процесс возвратил -1073741819 (0xC0000005) - PullRequest
0 голосов
/ 02 февраля 2019

Следующая программа должна создать вектор структур и передать его двум функциям.Я, честно говоря, запутался после всех разных способов, которыми этот вектор структур может быть пройден, и как будет выглядеть запись для этого.В любом случае, я придумала эту программу, которая компилирует, но, тем не менее, выдает ошибки при запуске.В частности, как только я введу сумму дохода (первый cin в функции).

const int SIZE = 2;

// structure of floats named TaxPayer
struct TaxPayer
{
    float taxRate;
    float income;
    float taxes;
};

// prototypes for taxTaker and taxPrint functions
void taxTaker(vector<TaxPayer>&);
void taxPrint(vector<TaxPayer>&);

int main()
{
    // driver
    // vector of type TaxPayer named "citizen"
    std::vector<TaxPayer>citizen(SIZE);
    taxTaker(citizen);
    taxPrint(citizen);

    return 0;
}

Одна из рассматриваемых функций:

void taxTaker(vector<TaxPayer> &citizen)
{
    int loops = 1;
    bool loopFlag = true;

    // asks for an validates inputs depending on vector size (it's 2 in this     
       case so it asks for inputs from 2 different people)
    do
    {
        cout << "Enter this year's income for tax payer #" << loops << ": " << endl;

        // validates entered income
        do
        {
            cin >> citizen[loops].income;
            if (std::cin.fail() || citizen[loops].income <= 0)
            {
                std::cout << "\nInvalid income. Amount must be over 0" << std::endl;
                std::cin.clear();
                std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
            }
            else
            {
                loopFlag = false;
            }
        }
        while (loopFlag);

        cout << "Enter the tax rate for tax payer #" << loops << ": " << endl;

        // validates entered tax rate
        do
        {
            cin >> citizen[loops].taxRate;
            if (std::cin.fail() || citizen[loops].taxRate < 0.01 || citizen[loops].taxRate > 9.9)
            {
                std::cout << "\nInvalid tax rate. Amount must be over 0.01 and under 9.9" << std::endl;
                std::cin.clear();
                std::cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
            }
            else
            {
                loopFlag = false;
            }
        }
        while (loopFlag);

        // should calculate the final tax for each person
        citizen[loops].taxes = citizen[loops].income * citizen[loops].taxRate;
        loops++;
    }
    while (loops <= SIZE);

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...