Member 12721687 Ответов: 1

Очень простой вопрос на моем калькуляторе изменений.


Эй, мне просто интересно, может ли кто-нибудь помочь мне решить мою проблему.
Мой код отлично работает для своей текущей цели-подсчитать, сколько монет вам нужно будет вернуть за сдачу (0-99 центов).
Мне было интересно, может ли кто-нибудь помочь мне сделать так, чтобы веб-страница отображала минимальное количество 5 центов, десять центов, 20 центов и 50 центов, которые представляют монеты, составляющие указанное количество центов. Я предполагаю, что вам нужно использовать%, но я не уверен, как бы я это сделал. Любая помощь будет очень признательна!
<!DOCTYPE html>
<html>
	<head>
		<script>
			const fiveChange = 5;
			const tenChange = 10;
			const twentyChange = 20;
			const fiftyChange = 50;
			
			var $ = function(id){
		
				return document.getElementById(id);
			}
			
			
			function calculateFiftyCents(){
				var fiftyCents = parseInt($("amount").value) % fiftyChange;
				fiftyCents=parseInt(fiftyCents);
				fiftyCents=fiftyCents.toFixed(0);
				return fiftyCents;
					
			}
			function calculateTwentyCents(){
				var twentyCents = parseInt($("amount").value) % twentyChange;
				twentyCents=parseInt(twentyCents);
				twentyCents=twentyCents.toFixed(0);
				return twentyCents;
				}
							
			function calculateTenCents(){
				var tenCents = parseInt($("amount").value) % tenChange;
				tenCents=parseInt(tenCents);
				tenCents=tenCents.toFixed(0);
				return tenCents;
				}
			function calculateFiveCents(){
				var fiveCents = parseInt($("amount").value) % fiveChange;
				fiveCents=parseInt(fiveCents);
				fiveCents=fiveCents.toFixed(0);
				return fiveCents;
				}
			
			
			
			
			function processEntries(){
				var amount = parseInt($("amount").value);
			
				if (isNaN(amount) || amount>99){
					alert("Change must be numeric and under 99")
				
				}
					else{
						$("fiftyCents").value = calculateFiftyCents();
						$("fiveCents").value = calculateFiveCents();
						$("tenCents").value = calculateTenCents();
						$("twentyCents").value = calculateTwentyCents();
												
					}
				
				
			}
			
			window.onload = function(){ //process click of calculation related to the button
				$("calculate").onclick = processEntries;
				$("amount").focus(); //blinks cursor
			}
			
			
		</script>
	
	</head>
	
	<body>
		<main>
			<h1> Change Calculator </h1><br> 
			<label for="amount">Enter number of cents (0-99).</label>	
			<input type="text" id="amount">
			<label> </label> 
			<input type="button" id="calculate" value="calculate"><br>
			<p><label for="fiveCents">Five cents:  </label>
			<input type="text" id="fiveCents"><br>
			<label for="tenCents">Ten cents:  </label>
			<input type="text" id="tenCents"><br>
			<label for="twentyCents">Twenty Cents:   </label>
			<input type="text" id="twentyCents"><br>
			<label for="fiftyCents">Fifty Cents:   </label>
			<input type="text" id="fiftyCents"><br>
			
		</main>	
	</body>
	
</html>


Что я уже пробовал:

Я пробовал использовать такой код, но адаптировался к приведенному выше коду.
function leftOverEggs(){
var remaining = parseInt($("eggs").value) % EGGS_IN_A_CARTON;
return remaining;

1 Ответов

Рейтинг:
12

OriginalGriff

Просто: вычтите "самую большую монету" из баланса: если результат положительный, посчитайте эту монету. Если это не так, уменьшите размер самой большой монеты до следующего (так 50c- & gt;20c -> 10c -> 5c - & gt; 1c). Повторяйте до тех пор, пока результат не станет нулевым.
Всегда будет 1 или 0 50C, 2, 1 или 0 20c, 1 или 0 10C, 1 или 0 5C и 4 или 0 1C
Таким образом, способ обмануть состоял бы в том, чтобы "изобрести" 4 монеты:

a 40c coin that prints as 2 * 20c
a 4c coin that prints as 4 * 1c
a 3c coin that prints as 3 * 1c
a 2c coin that prints as 2 * 1c
Таким образом, это всегда 0 или 1 "монета", и вы можете либо использовать массив, либо не нуждаться в цикле...


Member 12721687

Мне было интересно, как я это сделаю?
Я совсем новичок в кодировании и мне было интересно, какой код вы будете использовать для вычитания монет каждый раз?

OriginalGriff

Ну, лично я бы использовал оператор вычитания:' -'

Member 12721687

Спасибо, я посмотрю!