Ю3.5

Задача Ю3.5. Коммерция. Предприниматель, начав дело, взял кредит размером [latex]k[/latex] рублей, под [latex]p[/latex] процентов годовых и вложил его в своё дело. По прогнозам, его дело должно давать прибыль [latex]r[/latex] рублей в год. Сможет ли он накопить сумму, достаточную для погашения кредита, и если да, то через сколько лет?

[latex]k[/latex] [latex]p[/latex] [latex]r[/latex] [latex]n[/latex] Комментарий.
1800 50 1000 Кредит не будет погашен.
800000 15 40000 Кредит не будет погашен.
1000 5 400 3 Тест пройден.
1500 3,5 400 5 Тест пройден.

Код программы (C++):

Java:

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

Изначально запускается цикл, который основан на сравнении дохода за несколько лет [latex]nr[/latex] и размера кредита, которого он достигнет за эти годы (вычисляется по формуле сложных процентов: [latex]k(1+\frac{p}{100})^{n}[/latex]).

Затем программа проверяет, как возрастают доходы и долг за год. Если скорость роста доходов не превышает скорость роста долга, то программа выдаёт ошибку, или «кредит не будет погашен», после чего возвращается 0 и программа считается успешно завершённой. В противном случае цикл повторяется, а по его окончании на экран выводится количество лет, за которые долг можно будет погасить.

Проверить код можно здесь (C++) и здесь (Java).

Related Images:

4 thoughts on “Ю3.5

  1. Размера кредита ведь у Вас «вычисляется по формуле сложных процентов» , т.е. чем дальше тем быстрее растет, а доход стабилен. Тем не менее, условие «скорость роста доходов превышает скорость роста долга» проверяется только один раз, но потом ведь скорость роста долга может превысить скорость роста доходов, долг предприниматель так и не выплатит, а Ваша программа зациклится.

    • Спасибо большое за замечание, сначала не обратила на это внимания.
      Проблема исправлена, также я несколько отредактировала формулы.

  2. Вместо f==false лучше написать !f, да и переменную лучше назвать более осмысленно, например canPay. Конечно, понимаю, что k, p, r то же не очень осмысленные названия — но они соответствуют обозначениям в исходной математической постановке задачи, так что тут все претензии даже не к Юркину, а к математикам, которые привычно используют однобуквенные обозначения для переменных.

    И уж если говорить о стиле, то не согласен с тем, что Вы вынесли присваивание числа n из цикла (определение — согласен, но присвоить можно и в цикле). И вообще то количество лет может быть только целым — неужели в Java есть проблемы, если n будет типа int?

Добавить комментарий