Моя программа fahrenheit-celcius игнорирует мой оператор if-else и меняет значение на 0 каждый раз, когда я запускаю программу - PullRequest
1 голос
/ 26 октября 2019

Мое утверждение if-else не работает, у кого-нибудь есть идеи?

Итак, я создал это простое консольное приложение преобразования Фаренгейта-Цельсия с использованием C ++. Программа использует простое выражение if-else, чтобы определить, какое преобразование они хотят: по Фаренгейту-Цельсию или Цельсию-Фаренгейту.

Код в настоящее время не работает, однако, он мгновенно преобразует Цельсия-Фаренгейта и полностью игнорируетstd::cin Я положил, чтобы захватить пользовательский ввод. Вместо этого они вводят значение 0 каждый раз, когда я запускаю программу.

#include<iostream>
using namespace std;

int main() {
    unsigned short int fahrenheit{}, celsius{};
    char unit;

    cout << "Choose what unit you want to start with" << endl;
    cin >> unit;
    if (unit == 'c') {
        cout << "Enter the temperature in Celsius : " << endl;
        cin >> celsius;
        fahrenheit = (celsius * 9.0) / 5.0 + 32;
        cout << "The temperature in Fahrenheit : " << fahrenheit << endl;

    } else {
        cout << "Enter the temperature in Fahrenheit : " << endl;
        cin >> fahrenheit;
        fahrenheit = (celsius * 9.0) / 5.0 + 32;
        cout << "The temperature in Celcius : " << celsius << endl;
    }

    std::cin.clear(); // reset any error flags
    std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // ignore any characters in the input buffer until we find an enter character
    std::cin.get(); // get one more char from the user

    return 0;
}

Ответы [ 2 ]

1 голос
/ 26 октября 2019

В блоке else у вас есть не установленное значение для по Цельсию .
Я думаю, вы хотите сделать что-то подобное:

celsius = (fahrenheit - 32) * 5 / 9.0;

НоВаш код

fahrenheit = (celsius * 9.0) / 5.0 + 32;
0 голосов
/ 26 октября 2019

в условии if, используйте unit=='C' || unit=='c'. Может быть, вы вошли в верхний регистр. и удалите unsign для отрицательного значения и конвертируйте int to double для плавающего ответа. в другом случае fahrenheit = (celsius * 9.0) / 5.0 + 32; неверно, это будет celsius = ( fahrenheit - 32) * 5.0 / 9.0 ..

...