
Помогите написать программу на c++ . Начальный вклад клиента составил А руб. В первый месяц
ставка по вкладу составила р %, в каждый следующий месяц она будет увеличиваться на q %. Определить, через сколько месяцев накопленная сумма станет больше 2А. Рассматривать срок не более М месяцев.

Ответы на вопрос

Объяснение встроено в код в виде комментариев.
#include <iostream>
using namespace std;
int main()
{
double a = 10; //начальный вклад
double p = 2; //% до 1 месяца
double a_next = a * (1 + (p/100)); // сумма после выплаты за 1 месяц
double q = 4; //% после 1 месяца
double m = 10; //месяцы
double need = a * 2; // необходимая сумма
if (a_next >= need) { //если процент за 1 месяц очень велик и сразу даёт искомое значение - выводим
cout << "Pay off in one mouth" << endl;
exit(0);
}
double will_be_earned = ((2 * a_next * ((m - 2) * (1 + (q / 100)))) / 2) * (m-1); // максимальная сумма которую можно заработать за m месяцев
if (will_be_earned < need) { // если такую сумму вообще не заработать за такое кол-во месяцев - выходим
cout << "Wont pay off in " << m << " mouth" << endl;
exit(0);
}
for (long multiplier = 1; multiplier < m-1; multiplier++) { // перебираем месяцы пока не найдём нужный
double tmp_calc = (a_next * ((multiplier - 1) * (1 + (q / 100))));
if (tmp_calc >= need) {
cout << "Pay off in " << multiplier+1 << " mouth"<<endl;
break;
}
}
}



Для решения этой задачи вам потребуется написать программу на C++. Вот пример такой программы:
cpp#include <iostream>
int main() {
double A; // Начальный вклад клиента
double p; // Процентная ставка в первый месяц
double q; // Увеличение процентной ставки каждый месяц
double M; // Максимальное количество месяцев
double accumulated = A; // Накопленная сумма
std::cout << "Введите начальный вклад (A): ";
std::cin >> A;
std::cout << "Введите процентную ставку в первый месяц (p в десятичных долях): ";
std::cin >> p;
std::cout << "Введите увеличение процентной ставки каждый месяц (q в десятичных долях): ";
std::cin >> q;
std::cout << "Введите максимальное количество месяцев (M): ";
std::cin >> M;
int months = 0;
while (accumulated <= 2 * A && months < M) {
accumulated += accumulated * p;
p += p * q;
months++;
}
if (accumulated > 2 * A) {
std::cout << "Через " << months << " месяцев накопленная сумма станет больше 2A." << std::endl;
} else {
std::cout << "Накопленная сумма не станет больше 2A в течение " << M << " месяцев." << std::endl;
}
return 0;
}
Программа запрашивает начальный вклад (A), процентную ставку в первый месяц (p в десятичных долях), увеличение процентной ставки каждый месяц (q в десятичных долях) и максимальное количество месяцев (M). Затем она использует цикл while для расчета накопленной суммы вклада и увеличения процентной ставки в каждом месяце, пока накопленная сумма не станет больше 2A или не будет превышено максимальное количество месяцев.
После завершения цикла программа выводит результат: через сколько месяцев накопленная сумма станет больше 2A или сообщает, что это не произойдет в течение указанного максимального количества месяцев.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili