Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задача на javascript (https://javascript.ru/forum/misc/72343-zadacha-na-javascript.html)

Julia_1313 22.01.2018 22:53

Задача на javascript
 
Помогите пожалуйста разобраться с домашним заданием.

Нужно написать программу, которая исходя из суммы покупок пользователя, определяет его статус и сумму, на которую ему нужно совершить покупок до следующего статуса: пользователь должен ввести сумму своих покупок

Статусы:
0–1000 –без статуса
1000 –10_000 –бронзовый
10_000 –50_000 –серебреный
50_000 –100_000–золотой
100_000 –500_000 -платиновый

j0hnik 22.01.2018 23:56

а если выше 500 000 что тогда? 'платиновый' или 'вы ввели неверную сумму'?

Julia_1313 23.01.2018 00:05

Выше 500 000 тогда остается "платиновый"

Aetae 23.01.2018 00:12

var statuses = [
  [1e5, 'платиновый'],
  [5e4, 'золотой'],
  [1e4, 'серебреный'],
  [1e3, 'бронзовый']
], length = statuses.length;

var summ = +prompt('Сумма покупок?', '').replace(/\D/g,'');

var i = statuses.findIndex( ([value]) => value <= summ );

alert(
  (
    ~i 
    ? `У вас ${statuses[i][1]} статус` 
    : (i = length, `Вы нищеброд`) 
  ) + (
    i-- 
    ? `, до ${statuses[i][1].replace(/..$/, 'ого')} статуса следует потратить ещё ${statuses[i][0] - summ} шекелей.`
    : `!`
  )
);
:D

j0hnik 23.01.2018 00:17

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<body>
<input type="number" min='0'>Введите сумму покупок<br>
<span id="stat"></span><br>
<span id="nextStat"></span>
	<script>
document.querySelector('input').oninput=e=>{
var arr = [[100000,'платиновый'],[50000,'золотой'],[10000,'серебрянный'],[1000,'бронзовый'],[0,'без статуса']],
v = arr.findIndex(el => el[0] <= +e.target.value);
document.querySelector('#stat').textContent = 'Ваш статус: '+arr[v][1];
document.querySelector('#nextStat').textContent = v!=0?'Нужно потратить до следующего статуса: '+(+arr[v-1][0] - e.target.value):'Максимальный статус';
};
	</script>
</body>
</html>

Julia_1313 23.01.2018 00:19

Спасибо большое

Aetae 23.01.2018 00:25

Julia_1313, а если препод попросит вас объяснить всю эту хренатень? Все эти стрелочки туда-сюда, чёрточки... :)

Julia_1313 23.01.2018 00:35

Постараюсь как следует разобраться, прежде чем придется преподу объяснять:)

j0hnik 23.01.2018 00:56

Julia_1313, преподу лучше так решите, будет меньше вопросов
var summ = parseFloat(prompt('Сумма покупок?', ''), 10);
if (summ > 100000) {
	alert('Ваш статус платиновый! жизнь удалась!');
}
else if (summ >= 50000&& summ < 100000) {
	alert('Ваш статус золотой! До статуса платиновый вам надо потратить '+(100000-summ));
}
else if (summ >= 10000&& summ < 50000) {
	alert('Ваш статус серебряный! До статуса золотой вам надо потратить '+(50000-summ));
}
else if (summ >= 1000&& summ < 10000) {
	alert('Ваш статус бронзовый! До  статуса серебряный вам надо потратить '+(10000-summ));
}
else if (summ >= 0&& summ < 1000) {
	alert('У вас пока что нет статуса! До статуса бронзовый вам надо потратить '+(1000-summ));
}
else if ( summ < 0) {
	alert('Вы должны денег магазину! До статуса бронзовый вам надо потратить '+(1000-summ));
}
else alert('Неверный ввод!');

Julia_1313 23.01.2018 01:13

Спасибо, так действительно понятнее


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