Испытание:Вечный вопрос


#67

Даже не пакистанец.:wink: Я сам удивился, но работает.


#68

странно, что вы решение предыдущей задачи сюда не прикрутили


#69

Частично прикрепил, но в этой задаче пришлось изменить.

Предыдущая задача:

Сводка

`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);
};`


#70

тут вся фича в том, чтобы итоговую функцию выразить через предыдущую с разными аргументами

у вас все верно, поработайте над неймингом, я то ладно, привыкший к этой задачке, у других глазки лопнут :sob: ну и сократить чутка мон
кстати выложу современное на сегодня решение

Сводка
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}`;
}

#71

Я это понял, но в последней задаче не сработал код от предыдущей и пришлось выкручиваться. В предыдущей у меня формула расчёта капитализации немного другая.

Сейчас расшифровку сделаю.


#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; }

}


#73

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;
}


#74

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;
}


#76

true и false местами поменяйте


#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 }
    }

#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 }
}

#79

Во, второй лучше.
Вам бы английский подтянуть…


#81

Есть такое))) сначала надо доучить, найти работенку, а потом уже можно и английский. Очень даже хорошая вещь.


#82

Параллельно делайте, потому что что фронтэнд, что английский это не быстро


#83

Оцените, пожалуйста :

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)
  }
}

#84

а использовать предыдущую функцию не хотите попробовать?
по-хорошему 1 функция должна служить “одной функции”, как ни странно. тем не менее вы и считаете в одной функции и сравниваете в той же.


#85

Так лучше?

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)
  }
}

#86

ну тип того, разве что во второй функции убрать округление, а в первой вывести 1 return, повторяющиеся куски кода в ветвлении не ок.


#87

учел рекомендации?

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
  }
}

#88

да, вот теперь нормас =)