Частично прикрепил, но в этой задаче пришлось изменить.
Предыдущая задача:
Сводка
`var calculateDeposit = function (startM, interest, term, capitalized) {
var intPmonth = interest / 12 / 100;
var intSum = 0;
if (capitalized) {
for (var i = 0; i < term; i++) {
intSum = startM * intPmonth;
startM += intSum;
}
} else {
intSum = startM * intPmonth * term;
startM += intSum;
}
return Math.floor(startM);
};`
тут вся фича в том, чтобы итоговую функцию выразить через предыдущую с разными аргументами
у вас все верно, поработайте над неймингом, я то ладно, привыкший к этой задачке, у других глазки лопнут ну и сократить чутка мон
кстати выложу современное на сегодня решение
Сводка
let calculateDeposit = function(deposit, percent, duration, isCapitalization) {
if (!isCapitalization) {
deposit += percent/12*duration*deposit/100;
} else {
for (let i = 0; i < duration; i++) {
deposit += percent/12/100*deposit;
}
}
return Math.floor(deposit);
}
let getProfitableDeposit = function(deposit, duration, simplePercent, complexPercent) {
let simple = calculateDeposit(deposit, simplePercent, duration, false);
let complex = calculateDeposit(deposit, complexPercent, duration, true);
let recommendedType = 'капитализацию';
let finalAmount = complex;
if (complex <= simple) {
recommendedType = 'обычный вклад';
finalAmount = simple;
}
return `Выбирай ${recommendedType}. Заработаешь ${finalAmount}`;
}
1 лайк
Я это понял, но в последней задаче не сработал код от предыдущей и пришлось выкручиваться. В предыдущей у меня формула расчёта капитализации немного другая.
Сейчас расшифровку сделаю.
van123
26.Март.2019 19:39:32
72
var getProfitableDeposit = function(deposit, time, simplePercent, complexPercent) {
var rezForSimple,
rezForCapitaliz;
rezForSimple = deposit + Math.round((deposit * simplePercent * time) / 12/100);
rezForCapitaliz = Math.floor(deposit * (Math.pow(1+complexPercent/100/12, time)));
if(rezForSimple > rezForCapitaliz) {
return 'Выбирай обычный вклад. Заработаешь ' + rezForSimple;
} else {return 'Выбирай капитализацию. Заработаешь ' + rezForCapitaliz; }
}
1 лайк
var calculateDeposit = function (capital, percent, term, isCapital) {
var sum;
if(isCapital == false) {
sum = Math.floor((capital / 100 * (percent / 12 * term)) + capital);
}
else if(isCapital == true) {
var monthly;
for(var i = term; i > 0; i–) {
monthly = (capital / 100 * (percent / 12)) + capital;
capital = monthly;
sum = capital;
}
}
return Math.floor(sum);
};
var getProfitableDeposit = function(capital, term, procentSimple, procentCapital) {
var answer = ‘’;
var simple = calculateDeposit(capital, procentSimple, term, isCapital = false);
var complex = calculateDeposit(capital, procentCapital, term, isCapital = true);
if(simple > complex) {
answer = 'Выбирай обычный вклад. Заработаешь ’ + simple;
}
else if (complex > simple) {
answer = 'Выбирай капитализацию. Заработаешь ’ + complex;
}
return answer;
}
var calculateDeposit = function (sumatDep, stavkaYehr, srokVkl, kakoi) {
var sumPercent = 0;
if(kakoi){
for (var i = 0; i < srokVkl; i++) {
sumPercent = sumatDep * (stavkaYehr / 12 * 0.01);
sumatDep += sumPercent;
}
}else{
sumPercent += sumatDep * (stavkaYehr / 12 * srokVkl * 0.01);
sumatDep += sumPercent;
}
return Math.floor(sumatDep);
};
var getProfitableDeposit = function(sumatDep, srokVkl, stavkaYehr, procentCapital) {
var answer = ‘’;
var simple = calculateDeposit(sumatDep, stavkaYehr, srokVkl, kakoi = false);
var complex = calculateDeposit(sumatDep, procentCapital, srokVkl, kakoi = true);
if(simple > complex) {
answer = 'Выбирай обычный вклад. Заработаешь ’ + simple;
} else {
answer = 'Выбирай капитализацию. Заработаешь ’ + complex;
}
return answer;
}
true и false местами поменяйте
EvilF
29.Август.2019 06:57:47
77
Как то так. Правда переделал предыдущий из задания, а то он не очень подходил
var getProfitableDeposit = function (startDeposit, timeForDeposit, persentForNormal, persentForCapitalizetion) {
//Normal
var normal = Math.floor(startDeposit + (persentForNormal / 100 / 12) * timeForDeposit * startDeposit)
//Capitalizetion
for (var i = 1, j = startDeposit; i <= timeForDeposit; i++) {
j += j * (persentForCapitalizetion / 100 / 12)
} var capitalizetion = Math.floor(j);
//Who more
if (normal > capitalizetion) { return 'Выбирай обычный вклад. Заработаешь ' + normal }
if (normal < capitalizetion) { return 'Выбирай капитализацию. Заработаешь ' + capitalizetion }
}
EvilF
29.Август.2019 07:15:23
78
Еще один вариант с полным использование старой функции. Мне лень делать больше
var calculateDeposit = function (startMoney, percentInYear, depositTerm, capitalizetionPercent) {
if (capitalizetionPercent) {
for (var i = 1, j = startMoney; i <= depositTerm; i++) {
j += j * (percentInYear / 100 / 12);
} return Math.floor(j);
} else { return Math.floor(startMoney + (percentInYear / 100 / 12) * depositTerm * startMoney) }
}
var getProfitableDeposit = function (startDeposit, timeForDeposit, persentForNormal, persentForCapitalizetion) {
var normal = calculateDeposit(startDeposit, persentForNormal, timeForDeposit, false);
var capitalizetion = calculateDeposit(startDeposit, persentForCapitalizetion, timeForDeposit, true);
if (normal > capitalizetion) { return 'Выбирай обычный вклад. Заработаешь ' + normal }
if (normal < capitalizetion) { return 'Выбирай капитализацию. Заработаешь ' + capitalizetion }
}
Во, второй лучше.
Вам бы английский подтянуть…
EvilF
30.Август.2019 14:15:59
81
Есть такое))) сначала надо доучить, найти работенку, а потом уже можно и английский. Очень даже хорошая вещь.
Параллельно делайте, потому что что фронтэнд, что английский это не быстро
Оцените, пожалуйста :
var getProfitableDeposit = function (start, period, percentSimpl, percentCap) {
var incomeCap = start;
for (var i =0; i<period; i++) {
incomeCap +=incomeCap*percentCap/1200
}
var incomeSimpl = start+start*period*percentSimpl/1200;
if (incomeSimpl>incomeCap){
return 'Выбирай обычный вклад. Заработаешь ' + Math.floor(incomeSimpl)
} else {
return 'Выбирай капитализацию. Заработаешь ' + Math.floor(incomeCap)
}
}
Hierumo
13.Сентябрь.2019 07:18:04
84
а использовать предыдущую функцию не хотите попробовать?
по-хорошему 1 функция должна служить “одной функции”, как ни странно. тем не менее вы и считаете в одной функции и сравниваете в той же.
Так лучше?
var calculateDeposit = function (startAmount, percent, depositTerm, isCapital) {
if (isCapital) {
for (var i=0; i<depositTerm; i++) {
startAmount+=startAmount*percent/1200;
}
return Math.floor(startAmount)
} else {
return Math.floor(startAmount +startAmount*depositTerm*percent/1200)
}
};
var getProfitableDeposit = function (start, period, percentSimpl, percentCap) {
var incomeSimpl=calculateDeposit(start,percentSimpl, period, false);
var incomeCap=calculateDeposit(start,percentCap, period, true);
if (incomeSimpl>incomeCap){
return 'Выбирай обычный вклад. Заработаешь ' + Math.floor(incomeSimpl)
} else {
return 'Выбирай капитализацию. Заработаешь ' + Math.floor(incomeCap)
}
}
Hierumo
17.Сентябрь.2019 07:49:04
86
ну тип того, разве что во второй функции убрать округление, а в первой вывести 1 return, повторяющиеся куски кода в ветвлении не ок.
учел рекомендации?
var calculateDeposit = function (startAmount, percent, depositTerm, isCapital) {
if (isCapital) {
for (var i=0; i<depositTerm; i++) {
startAmount+=startAmount*percent/1200;
}
} else {
startAmount+=startAmount*depositTerm*percent/1200
}
return Math.floor(startAmount)
};
var getProfitableDeposit = function (start, period, percentSimpl, percentCap) {
var incomeSimpl=calculateDeposit(start,percentSimpl, period, false);
var incomeCap=calculateDeposit(start,percentCap, period, true);
if (incomeSimpl>incomeCap){
return 'Выбирай обычный вклад. Заработаешь ' + incomeSimpl
} else {
return 'Выбирай капитализацию. Заработаешь ' + incomeCap
}
}
Не работает, хотя первая программа в прошлом задании сработала четко.
Скорее ошибка в первом? Подскажите, знающие, пожалуйста
Не работает код на последней проверке
let calculateDeposit = function (money, percent, time, isCapital) {
let moneySumm = 0;
for (let i = 1; i <= time; i++) {
if (isCapital && time < 2) {
moneySumm = money + (money * percent / 100 / 12);
}
if (isCapital && time >= 2) {
let moneySumm1 = money + (money * percent / 100 / 12);
moneySumm = moneySumm1 + (moneySumm1 * percent / 100 / 12);
} else {
moneySumm = money + (money * (percent / 100 / 12) * time);
}
};
return Math.floor(moneySumm);
};
let getProfitableDeposit = function (money, percent, time, isCapital) {
let capital = calculateDeposit(money, percent, time, true)
let noCapital = calculateDeposit(money, percent, time, false)
if (capital > noCapital) {
message = 'Выбирай капитализацию. Заработаешь ' + capital;
} else {
message = 'Выбирай обычный вклад. Заработаешь ' + noCapital;
}
return message;
};