Введение
В этом лабораторном практикуме вы научитесь вычислять ипотечные платежи с помощью языка программирования 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()для форматированного вывода. - Вычисляются общая сумма платежей и общая сумма уплаченных процентов.
- Используется форматирование для выравнивания десятичных значений.
- Предоставляется понятный и читаемый разбор деталей ипотечного платежа.
Резюме
В этом лабораторном практикуме мы изучили, как получать необходимые входные данные для расчета ипотечных платежей, включая сумму основного долга, процентную ставку и количество платежей. Затем мы реализовали формулу расчета ипотечного платежа, используя эти данные, чтобы вычислить сумму ежемесячного платежа. Наконец, мы вывели рассчитанный платеж, чтобы отобразить результат.
Ключевыми этапами, рассмотренными в этом практикуме, являются: ввод суммы основного долга, процентной ставки и количества платежей от пользователя, а затем применение формулы ипотечного платежа для вычисления ежемесячного платежа. Программа гарантирует правильное получение входных данных и предоставляет четкий вывод данных о займе и рассчитанном платеже.



