Почему мой вложенный оператор If не генерирует cout? - PullRequest
0 голосов
/ 14 февраля 2020

У меня две проблемы с моим кодом. Первый - когда код выполняется во второй раз и т. Д., Он пропускает первую команду cin, но генерирует первый cout. Моя вторая проблема заключается в том, что если я введу значение true для оператора low, то я не генерирую cout. Все остальное работает правильно, кроме двух вещей

#include "pch.h"
#include <iostream>
#include <string>
#include <random>
#include <ctime>>

using namespace std;
int main()
{
    mt19937 generator;
    generator.seed(time(0));
    uniform_int_distribution<uint32_t>dice(1000, 9999);

    int ownderID=dice(generator);
    string ownerName;
    string dogName;
    string dogBreed;
    float dogAge;
    float dogWgt;
    int exits;
    int weekCost = 0;
    int dogAmount = 0;
    int dailyPrice = 0;

    do
    {
        cout << "Owner Name: ";
        getline(cin, ownerName);
        cout << endl;

        cout << "Dog Name: ";
        getline(cin, dogName);
        cout << endl;

        cout << "Dog Breed: ";
        getline(cin, dogBreed);
        cout << endl;

        cout << "Dog Age: ";
        cin >> dogAge;
        cout << endl;

        cout << "Dog Weight in lb: ";
        cin >> dogWgt;
        cout << endl;

        cout << "Daily Bill" << endl;
        cout << "Owner Name: " << ownerName << " ID" << "[" << ownderID << "]" << endl;
        cout << "Dog Name: " << dogName << endl;
        cout << "Dog Age: " << dogAge << endl;
        cout << "Dog Breed: " << dogBreed << endl;

        if (0<dogWgt && dogWgt <= 15)
        {
            dailyPrice = 55;
            weekCost += 55;
            if (15 < dogWgt && dogWgt <= 30)
            {
                dailyPrice = 75;
                weekCost += 75;
                if (30 < dogWgt && dogWgt <= 80)
                {
                    dailyPrice = 105;
                    weekCost += 105;
                    if (dogWgt > 80)
                    {
                        dailyPrice = 125;
                        cout << "Daily Cost for (" << dogWgt << ") is $" << dailyPrice << endl;
                        weekCost += 125;
                    }
                }
            }
        }

        cout << "To terminate enter -1; To add another dog information enter 1: ";
        cin >> exits;
        cout << endl;

        dogAmount += 1;

    } while (exits != -1);
    cout << "Total week cost: " << weekCost << endl;
    cout << "Total number of daycare entries: " << dogAmount << " dogs" << endl;
    system("PAUSE");
}

1 Ответ

1 голос
/ 14 февраля 2020

В самом конце задания l oop вставьте следующий вызов, чтобы удалить символ новой строки из входного потока, который выводится после этого оператора

cin >> exits;

То есть

#include <limits>

//...

    cin >> exits;
    cout << endl;
    std::cin.ignore( std::numeric_limits<std::streamsize>::max(), '\n' );

    dogAmount += 1;

} while (exits != -1);

Замените эти вложенные операторы if

    if (0<dogWgt && dogWgt <= 15)
    {
        dailyPrice = 55;
        weekCost += 55;
        if (15 < dogWgt && dogWgt <= 30)
        {
            dailyPrice = 75;
            weekCost += 75;
            if (30 < dogWgt && dogWgt <= 80)
            {
                dailyPrice = 105;
                weekCost += 105;
                if (dogWgt > 80)
                {
                    dailyPrice = 125;
                    cout << "Daily Cost for (" << dogWgt << ") is $" << dailyPrice << endl;
                    weekCost += 125;
                }
            }
        }
    }

на операторы if-else типа

    if (0<dogWgt && dogWgt <= 15)
    {
        dailyPrice = 55;
        weekCost += 55;
    }
    else if (15 < dogWgt && dogWgt <= 30)
    {
        dailyPrice = 75;
        weekCost += 75;
    }
    else if (30 < dogWgt && dogWgt <= 80)
    {
        dailyPrice = 105;
        weekCost += 105;
    }
    else // (dogWgt > 80)
    {
        dailyPrice = 125;
        cout << "Daily Cost for (" << dogWgt << ") is $" << dailyPrice << endl;
        weekCost += 125;
    }

Или, возможно, вы имеете в виду, что последним оператором else должно быть

    else // (dogWgt > 80)
    {
        dailyPrice = 125;
        weekCost += 125;
    }

, после чего следует следующее утверждение

    cout << "Daily Cost for (" << dogWgt << ") is $" << dailyPrice << endl;
...