20.04.2017, 21:53
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от KEMPZOR
|
число было кратно 5,
|
30 разве не кратно 5?
Сообщение от KEMPZOR
|
То есть (30 = 25 + 5) (20=15 + 5) (10= 5+5)
|
не осилил это, не понимаю, что вы этим хотите сказать.
|
|
20.04.2017, 22:19
|
Аспирант
|
|
Регистрация: 13.12.2016
Сообщений: 85
|
|
Сообщение от рони
|
30 разве не кратно 5?
не осилил это, не понимаю, что вы этим хотите сказать.
|
Приехал домой, покушал, собрался с мыслями, вроде получилось, посмотрите на мою реализацию, подскажите как сделать теперь с 1000, получается везде 35.
https://jsfiddle.net/KEMPZOR/64nnq1p9/
|
|
20.04.2017, 22:41
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
Сообщение от KEMPZOR
|
подскажите как сделать теперь с 1000
|
знать бы ещё что вы хотите сделать?
|
|
21.04.2017, 10:23
|
Аспирант
|
|
Регистрация: 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 тоже не так, правильно будет вот так.
|
|
21.04.2017, 11:01
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
KEMPZOR,
алгоритм формирования чисел так и не понял, помочь не могу.
|
|
26.04.2017, 02:05
|
Аспирант
|
|
Регистрация: 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.
|
|
26.04.2017, 11:13
|
Аспирант
|
|
Регистрация: 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.
|
|
26.04.2017, 17:38
|
Профессор
|
|
Регистрация: 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.
|
|
27.04.2017, 16:55
|
Аспирант
|
|
Регистрация: 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. Арифметику подтяну, обещаю )))
|
|
27.04.2017, 17:18
|
Профессор
|
|
Регистрация: 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.
|
|
|
|