Помогите написать программу на 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;
}
}
}