Преобразование Цельсия и Фаренгейта в C++


Я сделала мою первую небольшую программу, написанную на C++, и было интересно, если кто-то может оценить его и предложить некоторые улучшения. Нет копировать вставить. Мне было интересно, если я могу сделать что-то с моими маленькими знаниями и придумал простую идею преобразования Цельсия и Фаренгейта.

Я не знаю, почему, но при использовании 9/5, это дает другой результат, чем при использовании 1,8 или 9.0/5.0.

#include <iostream>
using namespace std;

// My very first code written by myself

  char temperature; // what are we converting ( celsius or farenheit into another )
  float value; // value that is being converted ( -10, 0, 10, 20.5 etc. )

int main()
{
    cout << "Welcome" << "\n" << "This little program converts Celsius to Fahrenheit and vice versa" << endl;
    cout << "Enter c for Celsius, f for Fahrenheit or p for proof" << endl;
    cin >> temperature; // storing input which accepts only c, f, p
    switch (temperature) { // checking input for one of 3 accepted options, else using default
        case 'c' : {
            cout << "Converting Celsius to Fahrenheit" << "\n" << "Enter value" << endl;
            cin >> value; // storing the value of temperature
            float farenheit = value*1.8+32; // converting celsius to fahrenheit using the formula
            cout << value << " Celsius in Fahrenheit is: " << farenheit << endl;
        }
            break;
        case 'f' : {
            cout << "Converting Fahrenheit to Celsius" << "\n" << "Enter value" << endl;
            cin >> value; // storing the value of temperature
            float celsius = (value-32)/1.8; // converting fahrenheit to celsius using the formula
            cout << value << " Fahrenheit in Celsius is: " << celsius << endl;
        }
            break;
        case 'p' : {
            cout << "Proof that program is running correctly, here is a list of -20 to 20 Celsius converted to Fahrenheit" << endl;
            for (int i=-20; i<21; i++) { // using a for loop to print Celsius to Fahrenheit values from -20 to 20
                cout << i << " = " << i*1.8+32 << endl; // output Celsius = Fahrenheit
            }
        }
            break;
        default:
            cout << "Invalid input! Use c, f or p" << endl; // any input except the 3 accepted options will result in this default output
    }
    cout << "Made by blackborg";
    return 0;
}


311
5
задан 23 марта 2018 в 11:03 Источник Поделиться
Комментарии
1 ответ


  • Вы могли бы также избавиться от привычки с помощью using namespace std. Включает в себя немного больше дополнительного кода, но это будет полезно в будущем, особенно при использовании заголовочных файлов.

  • Вам не нужны эти глобальные переменные за пределами main(). Вы действительно должны избегать глобальных переменных без крайней необходимости, так как они могут быть изменены из любой области, и вы можете даже не знать этого. Просто положить эти две переменные внутри если main() прежде чем их использовать.

  • farenheit пишется неправильно; он должен быть fahrenheit.

  • Что делать, если пользователь использует прописные буквы 'C' или 'ф' вместо этого? Вы должны учитывать также:

    case 'c':
    'C': {

    case 'f':
    'F': {

  • Это может быть более читабельным, чтобы умножить обе 9.0/5.0 и 5.0/9.0 соответственно, вместо 1,8, так вот чаще всего с этими формулами преобразования. Убедитесь, что не использовать целые числа для этого, в противном случае деление будет усекать к 0 (в этом случае, вы будете в конечном итоге с 1 вместо 1.8 и 0 вместо 0.555556).

  • Вы можете найти его лучше использовать double вместо float в большинстве случаев, и потому, что бывшая имеет больше точности.

  • Для следующего шага, я бы порекомендовал добавлять дополнительные функции с main() не должен делать ВСЮ работу.

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


  • Если вы хотите сделать вашу программу более полезно, вы также можете добавить Кельвинах.

  • Вы, вероятно, следует положить, что слоган cout в комментариях вместо того, чтобы, в противном случае она может быть раздражающим, чтобы увидеть его, приходят каждый раз, когда только в результате, как ожидается, будет напечатано.

  • Вы действительно не нужно return 0 в конце main() после успеха уже гарантировано в этой точке, хотя это не повредит ничего.

10
ответ дан 24 марта 2018 в 12:03 Источник Поделиться