Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывести значение чисел (https://javascript.ru/forum/misc/68501-vyvesti-znachenie-chisel.html)

рони 20.04.2017 21:53

Цитата:

Сообщение от KEMPZOR
число было кратно 5,

30 разве не кратно 5?
Цитата:

Сообщение от KEMPZOR
То есть (30 = 25 + 5) (20=15 + 5) (10= 5+5)

не осилил это, не понимаю, что вы этим хотите сказать.

KEMPZOR 20.04.2017 22:19

Цитата:

Сообщение от рони (Сообщение 450487)
30 разве не кратно 5?
не осилил это, не понимаю, что вы этим хотите сказать.

Приехал домой, покушал, собрался с мыслями, вроде получилось, посмотрите на мою реализацию, подскажите как сделать теперь с 1000, получается везде 35.
https://jsfiddle.net/KEMPZOR/64nnq1p9/

рони 20.04.2017 22:41

Цитата:

Сообщение от KEMPZOR
подскажите как сделать теперь с 1000

:blink: знать бы ещё что вы хотите сделать?

KEMPZOR 21.04.2017 10:23

Цитата:

Сообщение от рони (Сообщение 450497)
:blink: знать бы ещё что вы хотите сделать?

Если ставим 1000 на 6, должно получиться
1 - 35
2 - 35
3 - 35
4 - 35
5 - 35
6 - 825

Последний такой должен быть 825.

рони 21.04.2017 11:01

KEMPZOR,
алгоритм формирования чисел так и не понял, помочь не могу.

KEMPZOR 26.04.2017 02:05

Цитата:

Сообщение от рони (Сообщение 450523)
KEMPZOR,
алгоритм формирования чисел так и не понял, помочь не могу.

Извините Рони, на примере 100 на 6 месяцев я ввёл Вас в заблуждение, правильно будет вот так:
0 - 50
1 - 50
2 - 0
3 - 0
4 - 0
5 - 0
6 - 0

0 - Это первый платёж, остальные по месяцам.

KEMPZOR 26.04.2017 11:13

Цитата:

Сообщение от рони (Сообщение 450497)
:blink: знать бы ещё что вы хотите сделать?

Если 1000 на 6 мес, то правильно будет так.

0 - 160
1 - 160
2 - 160
3 - 160
4 - 160
5 - 160
6 - 40

Почему 160 и 40 ?
1000/6=166.6667
Наименьшее кратное будет 165.
165*6 = 990
1000-990=10 последний платёж (не менее 35), значит не подходит, уменьшаем ещё на 5.
160*6 = 960
1000-960=40 последний платёж (не менее 35), значит подходит.

Помогите пожалуйста решить задачку, за мной не заржавеет (заплачу денежку).

Dilettante_Pro 26.04.2017 17:38

Сумма (кратная 5, не меньше 35):<input id="sum" type = "text" value = "1000"><br>
<input type="button" value="Считать" onclick = "calc();"><br>
<div id = "result"></div>
<script>
function calc() {
   var summa = +sum.value, period = 6;
   if(summa < 35 || Math.floor(summa / 5) * 5 != summa) {
       alert("Сумма должна быть кратной 5, не меньше 35");
       result.innerHTML = "";
       return;
   }
   var tempPay, currentPay, lastPay;
   tempPay = summa / period;
   currentPay = Math.floor(tempPay / 5) * 5;
   if (currentPay < 35) currentPay = 35;
   period = Math.round(summa / currentPay);
   currentPay = currentPay + 5;
   do {
      currentPay = currentPay - 5;
      lastPay = summa - currentPay * period; 
   } while ( lastPay < 35 && lastPay != 0);
   if (currentPay < 35) { currentPay = 30; 
      do {
          currentPay = currentPay + 5;
          period = Math.floor(summa / currentPay);
          lastPay = summa - currentPay * period; 
      } while (lastPay != 0 && lastPay < 35);
   }
   result.innerHTML = "";
   for (var i = 0; i < period; i++) {
   result.innerHTML +=  i + " - " + currentPay + "<br>";
   }
   result.innerHTML += i  + " - " + lastPay + "<br>";
}
</script>

Насчет денежки - пускай себе ржавеет, лучше пусти эти средства на изучение арифметики

KEMPZOR 27.04.2017 16:55

Цитата:

Сообщение от Dilettante_Pro (Сообщение 451122)
Сумма (кратная 5, не меньше 35):<input id="sum" type = "text" value = "1000"><br>
<input type="button" value="Считать" onclick = "calc();"><br>
<div id = "result"></div>
<script>
function calc() {
   var summa = +sum.value, period = 6;
   if(summa < 35 || Math.floor(summa / 5) * 5 != summa) {
       alert("Сумма должна быть кратной 5, не меньше 35");
       result.innerHTML = "";
       return;
   }
   var tempPay, currentPay, lastPay;
   tempPay = summa / period;
   currentPay = Math.floor(tempPay / 5) * 5;
   if (currentPay < 35) currentPay = 35;
   period = Math.round(summa / currentPay);
   currentPay = currentPay + 5;
   do {
      currentPay = currentPay - 5;
      lastPay = summa - currentPay * period; 
   } while ( lastPay < 35 && lastPay != 0);
   if (currentPay < 35) { currentPay = 30; 
      do {
          currentPay = currentPay + 5;
          period = Math.floor(summa / currentPay);
          lastPay = summa - currentPay * period; 
      } while (lastPay != 0 && lastPay < 35);
   }
   result.innerHTML = "";
   for (var i = 0; i < period; i++) {
   result.innerHTML +=  i + " - " + currentPay + "<br>";
   }
   result.innerHTML += i  + " - " + lastPay + "<br>";
}
</script>

Насчет денежки - пускай себе ржавеет, лучше пусти эти средства на изучение арифметики

Сделал под свой лад, всё работает как надо, единственное что не получается, это меньше чем 244 некоторые числа не правильно считает, например 100.
<script type="text/javascript" src="http://l-c.by/g/libs/jquery/1.10.2/jquery.min.js"
<p>Сумма</p>
<input id="sum" type = "text" value = "">
<p>Месяц</p>
      <select class="select-month" name="month">
        <option value="2">1</option>
        <option value="3">2</option>
        <option value="4">3</option>
        <option value="5">4</option>
        <option value="6">5</option>
        <option value="7">6</option>
      </select>


<input type="button" value="Считать" onclick = "calc();"><br>
<div id = "result"></div>


function calc() {
   var summa = +sum.value.replace(",", "."), period = parseInt($("select[name=month]").val()) , selperiod = period;
   if(summa < 35) {
       alert("Сумма должна быть кратной 5, не меньше 35");
       result.innerHTML = "";
       return;
   }
   var tempPay, currentPay, lastPay;
   tempPay = summa / period;
   /*if (summa <= 244) { tempPay = summa / 35; }*/
   currentPay = Math.floor(tempPay / 5) * 5;
   if (currentPay < 35) currentPay = 35;

   currentPay = currentPay + 5;
   do {
      currentPay = currentPay - 5;
      lastPay = summa - currentPay * (period-1); 
   } while ( lastPay < 35 && lastPay != 0);
   if (currentPay < 35) { currentPay = 30; 
      do {
          currentPay = currentPay + 5;
          period = Math.round(summa / currentPay);
          lastPay = summa - currentPay * period; 
      } while (lastPay != 0 && lastPay < 35);
   }
   result.innerHTML = "";
   
   for (var i = 0; i < period-1; i++) {
   result.innerHTML +=  i + " - " + currentPay + "<br>";
   }
   result.innerHTML += i  + " - " + lastPay.toFixed(2) + "<br>";
   
}


P.S. Арифметику подтяну, обещаю )))

Dilettante_Pro 27.04.2017 17:18

KEMPZOR,
Цитата:

Сообщение от KEMPZOR
меньше чем 244 некоторые числа не правильно считает, например 100.

100 неправильно считается?
0 - 50
1 - 50
2 - 0 - это неправильно?
Еще какие неправильно?

Это условие соблюдается? Сумма должна быть кратной 5, не меньше 35

Или суммы бывают произвольные? Я это не предусматривал - платежи по месяцам кратные 5.
Правда, попробовал, снял ограничение по кратности 5 - все считается правильно, даже с копейками. Ошибок не увидел.


Часовой пояс GMT +3, время: 20:58.