Расчет ипотечных платежей на C

CBeginner
Практиковаться сейчас

Введение

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

Практикум подробно описывает весь процесс, от создания нового файла на языке C до реализации расчета платежа и вывода результата. Это практическое упражнение поможет вам развить навыки в области финансовой математики и расчета процентов с использованием языка программирования C.

Чтение Основного Долга, Ставки и Количества Платежей

В этом шаге мы научимся вводить необходимые данные для расчета ипотечных платежей: сумму основного долга, процентную ставку и количество платежей.

Сначала создадим новый файл C для нашего калькулятора ипотечных платежей:

cd ~/project
nano mortgage_calculator.c

Теперь напишем код для чтения входных значений:

#include <stdio.h>

int main() {
    double principal, rate;
    int num_payments;

    // Запрос и чтение суммы основного долга
    printf("Введите сумму основного долга: ");
    scanf("%lf", &principal);

    // Запрос и чтение годовой процентной ставки (в десятичном виде)
    printf("Введите годовую процентную ставку (в десятичном виде): ");
    scanf("%lf", &rate);

    // Запрос и чтение количества платежей
    printf("Введите общее количество платежей: ");
    scanf("%d", &num_payments);

    // Вывод входных значений для проверки
    printf("\nДетали кредита:\n");
    printf("Основной долг: $%.2f\n", principal);
    printf("Годовая процентная ставка: %.2f%%\n", rate * 100);
    printf("Количество платежей: %d\n", num_payments);

    return 0;
}

Компилируем и запускаем программу:

gcc mortgage_calculator.c -o mortgage_calculator
./mortgage_calculator

Пример вывода:

Введите сумму основного долга: 200000
Введите годовую процентную ставку (в десятичном виде): 0.05
Введите общее количество платежей: 360

Детали кредита:
Основной долг: $200000.00
Годовая процентная ставка: 5.00%
Количество платежей: 360

Разберем код:

  • Мы используем double для principal и rate, чтобы обрабатывать десятичные значения.
  • scanf() используется для чтения пользовательского ввода.
  • Форматный спецификатор %lf используется для значений типа double.
  • %d используется для целого числа количества платежей.
  • Мы выводим входные данные для проверки, чтобы убедиться, что они были правильно введены.

Формула Платежа = P*(R*(1+R)^N)/((1+R)^N -1)

В этом шаге мы реализуем формулу расчета ипотечного платежа, используя входные данные из предыдущего шага.

Давайте изменим существующий файл mortgage_calculator.c:

cd ~/project
nano mortgage_calculator.c

Обновите код для расчета ежемесячного платежа:

#include <stdio.h>
#include <math.h>

double calculate_mortgage_payment(double principal, double rate, int num_payments) {
    // Ежемесячная процентная ставка
    double monthly_rate = rate / 12;

    // Расчет платежа по формуле ипотечного платежа
    double payment = principal *
        (monthly_rate * pow(1 + monthly_rate, num_payments)) /
        (pow(1 + monthly_rate, num_payments) - 1);

    return payment;
}

int main() {
    double principal, rate;
    int num_payments;

    // Запрос и чтение суммы основного долга
    printf("Введите сумму основного долга: ");
    scanf("%lf", &principal);

    // Запрос и чтение годовой процентной ставки (в десятичном виде)
    printf("Введите годовую процентную ставку (в десятичном виде): ");
    scanf("%lf", &rate);

    // Запрос и чтение количества платежей
    printf("Введите общее количество платежей: ");
    scanf("%d", &num_payments);

    // Расчет ежемесячного платежа
    double monthly_payment = calculate_mortgage_payment(principal, rate, num_payments);

    // Вывод входных значений и рассчитанного платежа
    printf("\nДетали кредита:\n");
    printf("Основной долг: $%.2f\n", principal);
    printf("Годовая процентная ставка: %.2f%%\n", rate * 100);
    printf("Количество платежей: %d\n", num_payments);
    printf("Ежемесячный платеж: $%.2f\n", monthly_payment);

    return 0;
}

Компилируем программу с математической библиотекой:

gcc mortgage_calculator.c -o mortgage_calculator -lm

Запускаем программу:

./mortgage_calculator

Пример вывода:

Введите сумму основного долга: 200000
Введите годовую процентную ставку (в десятичном виде): 0.05
Введите общее количество платежей: 360

Детали кредита:
Основной долг: $200000.00
Годовая процентная ставка: 5.00%
Количество платежей: 360
Ежемесячный платеж: $1073.64

Ключевые моменты по формуле ипотечного платежа:

  • P — сумма основного долга.
  • R — ежемесячная процентная ставка (годовая ставка, деленная на 12).
  • N — общее количество платежей.
  • Функция pow() из <math.h> используется для расчета степеней.
  • Мы компилируем с -lm, чтобы связать математическую библиотеку.

Вывод Платежа

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

Давайте изменим файл mortgage_calculator.c, чтобы добавить более полную информацию о платеже:

cd ~/project
nano mortgage_calculator.c

Обновите код с улучшенным выводом платежа:

#include <stdio.h>
#include <math.h>

double calculate_mortgage_payment(double principal, double rate, int num_payments) {
    // Ежемесячная процентная ставка
    double monthly_rate = rate / 12;

    // Расчет платежа по формуле ипотечного платежа
    double payment = principal *
        (monthly_rate * pow(1 + monthly_rate, num_payments)) /
        (pow(1 + monthly_rate, num_payments) - 1);

    return payment;
}

void print_payment_details(double principal, double rate, int num_payments, double monthly_payment) {
    double total_payment = monthly_payment * num_payments;
    double total_interest = total_payment - principal;

    printf("\n--- Подробный расчет ипотечного платежа ---\n");
    printf("Основной долг:        $%10.2f\n", principal);
    printf("Годовая процентная ставка:  %10.2f%%\n", rate * 100);
    printf("Общее количество платежей: %d\n", num_payments);
    printf("Ежемесячный платеж:       $%10.2f\n", monthly_payment);
    printf("Общая сумма платежей:        $%10.2f\n", total_payment);
    printf("Общая сумма уплаченных процентов:   $%10.2f\n", total_interest);
}

int main() {
    double principal, rate;
    int num_payments;

    // Запрос и чтение суммы основного долга
    printf("Введите сумму основного долга: ");
    scanf("%lf", &principal);

    // Запрос и чтение годовой процентной ставки (в десятичном виде)
    printf("Введите годовую процентную ставку (в десятичном виде): ");
    scanf("%lf", &rate);

    // Запрос и чтение количества платежей
    printf("Введите общее количество платежей: ");
    scanf("%d", &num_payments);

    // Расчет ежемесячного платежа
    double monthly_payment = calculate_mortgage_payment(principal, rate, num_payments);

    // Вывод подробной информации о платеже
    print_payment_details(principal, rate, num_payments, monthly_payment);

    return 0;
}

Компилируем программу:

gcc mortgage_calculator.c -o mortgage_calculator -lm

Запускаем программу:

./mortgage_calculator

Пример вывода:

Введите сумму основного долга: 200000
Введите годовую процентную ставку (в десятичном виде): 0.05
Введите общее количество платежей: 360

--- Подробный расчет ипотечного платежа ---
Основной долг:        $  200000.00
Годовая процентная ставка:         5.00%
Общее количество платежей: 360
Ежемесячный платеж:       $    1073.64
Общая сумма платежей:        $  386510.40
Общая сумма уплаченных процентов:   $  186510.40

Основные улучшения:

  • Добавлена новая функция print_payment_details() для форматированного вывода.
  • Вычисляются общая сумма платежей и общая сумма уплаченных процентов.
  • Используется форматирование для выравнивания десятичных значений.
  • Предоставляется понятный и читаемый разбор деталей ипотечного платежа.

Резюме

В этом лабораторном практикуме мы изучили, как получать необходимые входные данные для расчета ипотечных платежей, включая сумму основного долга, процентную ставку и количество платежей. Затем мы реализовали формулу расчета ипотечного платежа, используя эти данные, чтобы вычислить сумму ежемесячного платежа. Наконец, мы вывели рассчитанный платеж, чтобы отобразить результат.

Ключевыми этапами, рассмотренными в этом практикуме, являются: ввод суммы основного долга, процентной ставки и количества платежей от пользователя, а затем применение формулы ипотечного платежа для вычисления ежемесячного платежа. Программа гарантирует правильное получение входных данных и предоставляет четкий вывод данных о займе и рассчитанном платеже.