Загрузка...

Кредитно банковский калькулятор c++

Тема в разделе C/C++ создана пользователем qtj0 26 дек 2023. 324 просмотра

Загрузка...
  1. qtj0
    qtj0 Автор темы 26 дек 2023 qtj1 1099 22 фев 2018
    в унике дали инд задание написать консольный кредитно-банковский калькулятор на плюсах
    обязательное условие было что бы было минимум 3 входных значения и 2 вызываемых функции(не считая main)
    вот написал, хочу узнать мнение умников, какие вообще ошибки допустил, что можно улучшить и тд(так как на плюсах до этого вообще почти не прогал)
    сравнивал с различными подобными онлайн калькуляторами, вроде одинаковые цифры выдает

    Код
    #include <iostream>
    #include <cmath>
    using namespace std;

    float anuent_credit(float credit_sum, float credit_percent, int credit_date) {
    credit_percent = credit_percent / 100 / 12; // процент ставка в месяц
    int n = credit_date; // ко-лво платежей

    float payment = (credit_percent * credit_sum) / (1 - pow(1 + credit_percent, -n));
    return payment * n; // сумма платежей за весь срок кредита
    }

    float diff_credit(float credit_sum, float credit_percent, int credit_date) {
    credit_percent = credit_percent / 100 / 12; // процент ставка в месяц

    float totalPayments = 0.0;
    for (int i = 0; i < credit_date; ++i) {
    float payment = (credit_sum / credit_date) + (credit_sum - (credit_sum * i / credit_date)) * credit_percent;
    totalPayments += payment;
    }
    return totalPayments - credit_sum; // переплата
    }

    int main() {
    float credit_sum;
    int credit_date;
    char credit_type;
    float credit_percent;

    cout << "введите сумму кредита: ";
    cin >> credit_sum;

    cout << "введите срок кредита в месяцах: ";
    cin >> credit_date;

    cout << "введите процентную ставку: ";
    cin >> credit_percent;

    cout << "выберите тип кредита (A - аннуитетный, D - дифференцированный): ";
    cin >> credit_type;

    if (credit_type == 'A') {
    float overPayment = anuent_credit(credit_sum, credit_percent, credit_date);
    float totalPayment = overPayment - credit_sum;
    cout << "переплата по кредиту: " << totalPayment << endl;
    cout << "общая сумма выплат: " << overPayment << endl;
    } else if (credit_type == 'D') {
    float overPayment = diff_credit(credit_sum, credit_percent, credit_date);
    cout << "переплата по кредиту: " << overPayment << endl;
    cout << "общая сумма выплат: " << overPayment + credit_sum << endl;
    } else {
    cout << "неверно выбран тип кредита." << endl;
    }

    return 0;
    }
     
  2. nullptr
    [IMG]
    [IMG]
    [IMG]
    --- Сообщение объединено с предыдущим 26 дек 2023
    где валидация переменных?
     
    1. Посмотреть предыдущие комментарии (3)
    2. Ягода
      Erna, не могу, моя семья нуждается в миске риса
    3. Erna
      Ягода, Обменяю мои переменны на MiskaRisa=999
  3. LVV
    В дополнение к выше комментарию:

    Сделать сетпресижн для точности после запятой. И использовать дабл.
    Использовать exception для проверки на число, деление на ноль и прочее.
    И хорошая практика использовать глобальные переменные.

    Если прошли циклы, добавить пункт в меню: где есть опция выхода и можно было использовать пока не введет определеную букву или цифру.
     
Top