Загрузка...

Credit and banking calculator c++

Thread in C/C++ created by qtj0 Dec 26, 2023. 346 views

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

    Code
    #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]
    The post was merged to previous Dec 26, 2023
    где валидация переменных?
     
    1. View previous comments (2)
    2. Ягода
      Erna, невалид, отказ
    3. Erna
    4. Ягода
      Erna, не могу, моя семья нуждается в миске риса
    5. View the next comments (1)
  3. LVV
    В дополнение к выше комментарию:

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

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