Kyon
05.Июль.2018 05:02:51
1
Добрый день. Подскажите пожалуйста, никак не могу разобраться с решением этой программы. Не проходит одна проверка, вот код который я написал:
var calculateDeposit = function (startcash, percent, period, isCapitalizetion) {
if (isCapitalizetion) {
for (var i=1; i <= period; i++) {
startcash += (startcash*percent/100/12)*period;
}
return Math.round(startcash);
}
else {
var sumcash = startcash + Math.round((startcash*percent/100/12)*period);
return Math.round(sumcash);
}
}
При такой реализации не проходит проверка: https://prnt.sc/k2pw3w
Может кто-то подскажет, что не так в моей функции, так как я упорно не понимаю почему результат 103361 не подходит. Хотя по подсчету с калькулятором, за 2 месяца должна быть такая сумма.
Ineska
05.Июль.2018 08:49:01
2
Форматируйте свой код с помощью кнопки </> в редакторе сообщений, пожалуйста. Он отображается некорректно.
Kyon
05.Июль.2018 10:11:30
3
Окееей, отформатировал. А что с кодом то?какие то варианты в чем ошибка, есть?
Ineska
05.Июль.2018 10:36:43
4
Это неверная формула при расчете депозита с капитализацией. Вы не можете здесь умножать на period, ведь в каждом месяце сумма процентов другая.
Dober
27.Август.2018 20:20:09
6
var calculateDeposit = function (startDeposit, percent, term, KapitalPercent) {
var Itog = startDeposit;
if (KapitalPercent) {
var Itog = startDeposit;
for (var i = 1; i <= term; i++) {
Itog += Itog * (percent / 12 / 100)}
} else {
Itog += startDeposit * (percent / 12 * term /100);
}
return Math.round(Itog);
};
Думаю задать переменную для начала отсчета более верное решение, нежели менять исходное данное депозит и возвращать его, нет?
ну да, только так переменные не называют! только английский язык, поэтому никаких Itog и Kapital. И с заглавной буквы в js начинаются только классы
И у вас строчка var Itog = startDeposit;
повторяется два раза
Как-то так, практически как и у всех…
Деньги к деньгам
var calculateDeposit = function (deposit, percent, period, isCapitalization) {
var totalAmount = deposit;
if (isCapitalization) {
for (var i = 0; i < period; i++) {
totalAmount += totalAmount * (percent / 100 / 12);
}
}else {
totalAmount += totalAmount * (percent / 100 / 12 * period);
}
return Math.round(totalAmount);
}
minwin
19.Сентябрь.2018 12:55:05
9
Беда с проверкой.
если в конце вызываю функцию с корректными аргументами - считает правильно, а при проверке - не находит математических функций.
Кто-то сталкивался с подобным?
скриншот
(upload://kG4OGpYmT5ygVATYmal01es8Re7.png)
Самое смешное, что этот же текст функции использованный в следующей задаче (“Вечный вопрос”) работает и принимается системой!
второй скрин
minwin спасибо, мы проверим, в чём проблема. Буду держать вас в курсе
eoogen
24.Сентябрь.2018 13:33:24
13
var i = 0;
var calculateDeposit = function (sumInit, procent, period, isCapitalization) {
var procent = procent / 100;
if (!isCapitalization) {
return Math.round(((procent / 12 * period) * sumInit) + sumInit);
};
while (i < period) {
sumInit += ((procent / 12) * sumInit);
i++;
}
return Math.round(sumInit);
};
Здравствуйте. Если я правильно понимаю, вы проходите курс из Edge. Попробуйте другой браузер, например Chrome. Там всё должно работать. Edge в целом хорошо поддерживает JavaScript, но не полностью, есть несколько сложностей.
1 лайк
чуть подсократил вариант, похоже на то, что сделал @Die
моё рабочее
var calculateDeposit = function(deposit, percent, duration, isCapitalization) {
if (!isCapitalization) {
deposit *= (100+percent/12*duration)/100;
} else {
for (var i = 0; i < duration; i++) {
deposit *= (100+percent/12)/100;
}
}
return Math.floor(deposit);
}
Почему-то не проходит проверка на вклад без капитализации сроком больше 1 мес. Считаю вручную по той же формуле - всё сходится.
var calculateDeposit = function (startSum, yearPercent, month, capitalize) {
var sum;
if ( capitalize = false ) {
sum = yearPercent / 12 * month / 100 * startSum + startSum;
} else {
sum = startSum;
for ( i = 0; i < month; i++ ) {
sum = yearPercent / 12 / 100 * sum + sum;
}
}
return Math.round(sum);
}
Ineska
10.Декабрь.2018 07:32:59
17
Vestiger:
capitalize = false
Один знак = означает только присвоение.
Спасибо, сработало. Опять перепутал программирование с арифметикой
S.K
13.Декабрь.2018 07:37:44
19
var calculateDeposit = function (firstSum, percent, period, capital) {
if (capital) {
for (var i = 0; i < period; i++) {
firstSum = (percent / 12 * 1 / 100 + 1) * firstSum;
period--;
return Math.round((percent / 12 * period / 100 + 1) * firstSum);
}
} else {
return Math.round((percent / 12 * period / 100 + 1) * firstSum)
}
};