ВСЕМ доброго времени суток. застрял на одной задаче.
алгоритм как решить я знаю но не получается это прописать.
вот сама задача Студент Сергій замислився про те, щоб узяти кредит и придбати всі курси Mate academy разом. Банк дозволяє брати кредити за спрощеною системою і виплачувати їх в кінці строку всією сумою.
Ознайомившись з умовами банку, Сергій дізнався, що якщо брати в кредит 2000 доларів під 5 відсотків річних на п'ять років, то через п'ять років він має віддати 2551 долар. Та Сергій розраховував вкластися всього у 2500 доларів. Перерахувавши ще раз, банкір повідомив, що Сергій може взяти кредит на 4 роки, в такому випадку він буде зобов'язаний сплатити всього 2430 доларів:
Перший рік 2000 + 5% = 2100
Другий рік 2100 + 5% = 2205
Третій рік 2205 + 5% = 2315
Четвертий рік 2315 + 5% = 2430
Дано змінні int amount - сума за кредитом, double percent - річний відсоток (0.05 для 5%), та int expectedLimit - ліміт клієнта по сумі повернення коштів.
Створи змінну resultYears і напиши цикл while, щоб отримати максимальний період в роках, на який можна взяти кредит, не перевищивши очікуваний ліміт.
Результат виведи на экран у форматі "Credit period is maximum X years!".
вот мой код и коментарии с вопросами (я в кредитах и в процентах не разбираюсь)
double s,q;
int x, resultYears;
//подсчет денег за первый год
/* наверно надо сохранить результат подсчета за первый год и к нему добавить перемножение этого же результата на 0,05 процентов и делать это цыклически но результат подщета денег за первый год не вычислять постоянно а значит подсчет денег за первый год надо делать вне цикла и уже потом сравнить с лимитом студента.
*/
s = amount * 0.05;
while(q <= expectedLimit){
//просчет денег за каждый год
//s = amount + amount * 0.005;
q = s + s * 0.005;
//или я от не пойму каждый год к получившейся суме в первом году прибавлять результат умножения 0,50 на тело кредита или на ту суму которая получилась в первом году
/*
или может все же вот так сделать подсчет денег за каждый год
q = amount + amount * 0.05;
*/
x = resultYears += 1;
System.out.println("Credit period is maximum" + " " + x + " " + "years!");
}
но при этом оно выдает вот такую ошибку (пишет что переменная не могла бить инициализированная)
Compile error:
/BankCredit.java:10: error: variable q might not have been initialized
while(q <= expectedLimit){
^/BankCredit.java:23: error: variable resultYears might not have been initialized
x = resultYears += 1;
^
СПАСИБО.
Роман Маляренко
1 уровень
ЗУСТЫЛ НА ОДНОМ МЕСТЕ
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Vima Perceptron
4 августа 2021, 22:39
Раздел помощь для слабых духом... ))
0
Расул
5 августа 2021, 12:40
Так то да. Порой заходишь полный отчаяния в помощь, в поиске хоть какой-то подсказки, но там как назло большинство выкладывает ответы и увидев мельком решение, сразу врубаешься как задачу решать и считаешь себя лузером.
Но блин бывают задачи, которые решаешь так долго, что будто бы в бесконечную петлю попадаешь.
+1
Иван
4 августа 2021, 21:42
Приветствую! Перед циклом while(q <= expectedLimit) Вам надо явно инициализировать переменную "q", аналогично переменую "resultYears" необходимо инициализировать перед использованием.
0
Роман Маляренко
5 августа 2021, 13:12
благодарю
0