Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 20.04.2017, 21:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от KEMPZOR
число было кратно 5,
30 разве не кратно 5?
Сообщение от KEMPZOR
То есть (30 = 25 + 5) (20=15 + 5) (10= 5+5)
не осилил это, не понимаю, что вы этим хотите сказать.
Ответить с цитированием
  #12 (permalink)  
Старый 20.04.2017, 22:19
Аспирант
Отправить личное сообщение для KEMPZOR Посмотреть профиль Найти все сообщения от KEMPZOR
 
Регистрация: 13.12.2016
Сообщений: 85

Сообщение от рони Посмотреть сообщение
30 разве не кратно 5?
не осилил это, не понимаю, что вы этим хотите сказать.
Приехал домой, покушал, собрался с мыслями, вроде получилось, посмотрите на мою реализацию, подскажите как сделать теперь с 1000, получается везде 35.
https://jsfiddle.net/KEMPZOR/64nnq1p9/
Ответить с цитированием
  #13 (permalink)  
Старый 20.04.2017, 22:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от KEMPZOR
подскажите как сделать теперь с 1000
знать бы ещё что вы хотите сделать?
Ответить с цитированием
  #14 (permalink)  
Старый 21.04.2017, 10:23
Аспирант
Отправить личное сообщение для KEMPZOR Посмотреть профиль Найти все сообщения от KEMPZOR
 
Регистрация: 13.12.2016
Сообщений: 85

Сообщение от рони Посмотреть сообщение
знать бы ещё что вы хотите сделать?
Если ставим 1000 на 6, должно получиться
1 - 35
2 - 35
3 - 35
4 - 35
5 - 35
6 - 825

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

Последний раз редактировалось KEMPZOR, 26.04.2017 в 10:28. Причина: С 1000 тоже не так, правильно будет вот так.
Ответить с цитированием
  #15 (permalink)  
Старый 21.04.2017, 11:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

KEMPZOR,
алгоритм формирования чисел так и не понял, помочь не могу.
Ответить с цитированием
  #16 (permalink)  
Старый 26.04.2017, 02:05
Аспирант
Отправить личное сообщение для KEMPZOR Посмотреть профиль Найти все сообщения от KEMPZOR
 
Регистрация: 13.12.2016
Сообщений: 85

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

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

Последний раз редактировалось KEMPZOR, 26.04.2017 в 10:27.
Ответить с цитированием
  #17 (permalink)  
Старый 26.04.2017, 11:13
Аспирант
Отправить личное сообщение для KEMPZOR Посмотреть профиль Найти все сообщения от KEMPZOR
 
Регистрация: 13.12.2016
Сообщений: 85

Сообщение от рони Посмотреть сообщение
знать бы ещё что вы хотите сделать?
Если 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), значит подходит.

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

Последний раз редактировалось KEMPZOR, 26.04.2017 в 11:50.
Ответить с цитированием
  #18 (permalink)  
Старый 26.04.2017, 17:38
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сумма (кратная 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>

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

Последний раз редактировалось Dilettante_Pro, 26.04.2017 в 18:04.
Ответить с цитированием
  #19 (permalink)  
Старый 27.04.2017, 16:55
Аспирант
Отправить личное сообщение для KEMPZOR Посмотреть профиль Найти все сообщения от KEMPZOR
 
Регистрация: 13.12.2016
Сообщений: 85

Сообщение от Dilettante_Pro Посмотреть сообщение
Сумма (кратная 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. Арифметику подтяну, обещаю )))
Ответить с цитированием
  #20 (permalink)  
Старый 27.04.2017, 17:18
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

KEMPZOR,
Сообщение от KEMPZOR
меньше чем 244 некоторые числа не правильно считает, например 100.
100 неправильно считается?
0 - 50
1 - 50
2 - 0 - это неправильно?
Еще какие неправильно?

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

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

Последний раз редактировалось Dilettante_Pro, 27.04.2017 в 17:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести диапазон чисел Atljh0987 Общие вопросы Javascript 3 19.01.2017 23:39
Как вывести значение формулы в <div> Андрей Есипович Элементы интерфейса 2 14.09.2016 16:26
вывести значение кнопки в текстовое поле matt_xs Общие вопросы Javascript 10 16.04.2016 14:50
Проблемы с выпадающим списком JavaScript ursus102 Общие вопросы Javascript 0 16.01.2016 19:30
Выводить значение раньше переменных Гробовщик Общие вопросы Javascript 11 10.09.2013 08:42