@biohazardbenzg

Как усовершенствовать (переделать) конвектор валют в С++?

Здравствуйте.
Изучаю С++ по книге Барьяне Страуструпа.

Попалось задание - Напишите программу для перевода гривен, рублей и юаней в доллары.

Написал вот такое "чудо"
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
    // Перевод гривен, рублей, юаней в доллар

    // Использование инструкции "if"

    setlocale(LC_CTYPE, "Russian_Russia.1251");
    double UAH = 28.29, RU = 74.12, CNY = 6.52; // стоимость валют за 1 доллар
    int dollar; // единица для перевода
    char currenty = ' ';
    cout << "Введите валюту и единицу, для перевода\n"; 
    cin >> dollar >> currenty;
    if (currenty == 'u')
    {
        cout << "Стоимость " << dollar << "$ в UAH составит(" << dollar * UAH << ").";
    }
    if (currenty == 'r')
    {
        cout << "Стоимость " << dollar << "$ в RU составит(" << dollar * RU << ").";
    }
    if (currenty == 'c')
    {
        cout << "Стоимость " << dollar << "$ в CNY составит(" << dollar * CNY << ").";
    }
    
}


*Ушло два вечера для того, чтобы кое-как заработало...

Хочу узнать, как можно сделать её более проще и правильнее, имея соответственно мой уровень знаний (основы основ), чтобы я смог это всё понять и переварить.

Заранее благодарен за помощь и объяснение!
  • Вопрос задан
  • 696 просмотров
Решения вопроса 1
Adamos
@Adamos
Вы занимаетесь ерундой, вылизывая упражнение на оператор.
Отложите оптимизации и красивости хотя бы до конца учебника.
Сейчас, с едва начатой базой, так можно разве что нахвататься странных идей, от которых потом придется избавляться, переучиваясь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Например, попробуй избавится от ифов и переменных под каждую валюту. Подсказка - нужно использовать правильную коллекцию под это дело.
Ответ написан
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Вцелом и так пойдет (если задание, как вы сказали, на if`ы).

А вообще из критики/рекомендаций:
1.
Напишите программу для перевода гривен, рублей и юаней в доллары.

Ваша программа делает ровно наоборот - переводит из долларов в гривны/рубли/юани.

2. Использовать вместо букв 'r'/'u'/'c' международные коды валют https://ru.wikipedia.org/wiki/ISO_4217
Вам потребуется работа со строками. Это 100% есть где-то дальше по ходу учебника, так что просто читайте дальше, не зацикливайтесь на этом задании.

3. Избыточно конкретно для этого задания, но для практики полезно - Сделать валюту с помощью классов.
Как минимум нужны методы типа конвертации в строку, перегрузки операторов << >> и арифметических операторов и плюс функциями вида convertTo(std::string currencyName)
Опять же 146% что вся вторая половина учебника про ООП, так что нет смысла тратить на это время сейчас.

4. Ну и, на всякий случай, не используйте числа с плавающей запятой для работы с деньгами (или других сущностей, когда вам важна точность) если что-то серьезное пишете, а то, знаете-ли 0.1 + 0.2 != 0.3. В это проге это не важно, не нужно переделывать, но как минимум знать почему так происходит нужно.
Нормальный учебник по-идее должен объяснять особенности чисел с плавающей точкой
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы