L oop помощь в программе C ++ MPG - PullRequest
0 голосов
/ 17 февраля 2020

Я застрял в бесконечном l oop и не могу понять, где я ошибся с моим кодом ниже. Я гуглил, прочитал и перечитал мой учебник и до сих пор не могу понять, где моя ошибка. Может ли кто-нибудь помочь мне направить меня в правильном направлении, чтобы я мог решить эту проблему Do-While l oop?

#include <iostream>
#include <cmath>

using namespace std;

const double liter = 0.264179;

int main()
{
    double litersOfGas, miles, gallons, mpg;
    char ans;
    do
    {
        cout << "Enter the number of liters of gas consumed: \n";
        cin >> litersOfGas;
        cout << "Enter the number of miles driven: \n";
        cin >> miles;
        gallons = (litersOfGas * liter);
        mpg = (miles / gallons);
        cout << litersOfGas << " liters of gasoline consumed, "`enter code here`
            << miles << " miles traveled = " << mpg << " mpg." << endl;

        cout << "Would you like to calculate again (Y/N)?" << endl;
        cin >> ans;
    } while ((ans == 'y') && (ans == 'Y'));


    system("Pause");
    return 0;
}

1 Ответ

0 голосов
/ 17 февраля 2020

Помимо других ваших синтаксических ошибок, другие комментаторы отметили, что ваш l oop не должен переоценивать, это правда.

Однако в этом случае нельзя иметь и Y, и y в одной символьной переменной, если бы параметры были инвертированы (и исправлены синтаксические ошибки), это привело бы к бесконечному l oop.

int main()
{
    char ans;
    do
    {
        cout << "Would you like to calculate again (Y/N)?" << endl;
        cin >> ans;
        if(ans=='y' || ans=='Y') // even if you choose not to continue again, the last statement of a do-while will execute unless you set a condition for it
            cout<<"Going again \n";
    } while ((ans == 'y') || (ans == 'Y')); // ans can be only 'Y' or 'y' , not both

    return 0;
}

А то время-l oop будет более полезным для вашего случая (на основе опубликованного вами кода):

char ans = 'Y';
while ((ans == 'Y') || (ans == 'y')) {
    cout << "Would you like to calculate again (Y/N)?" << endl;
    cin >> ans;
}
...