Best Answer
Здравей
Мисля, че част от проблема идва от:
10-ти ред - money = money * 100; (трябва да закръглиш резултата)
и също условието на while цикъла трябва да е без равно - while (money > 0)
Прикачвам моето решение на JavaScript и малко по-различно, но мисля, че ще се ориентираш.
function coins(input) {
let coins = Number(input.shift());
let lv = Math.floor(coins);
let st = Math.floor(coins * 100 - lv * 100)
let count = 0;
while (lv > 0) {
if (lv >= 2) {
lv -= 2;
count++;
} else if (lv >= 1) {
lv--;
count++;
}
}
while (st>0) {
if(st >= 50) {
st -= 50;
count++;
} else if(st >= 20) {
st -= 20;
count++;
} else if(st >= 10) {
st -= 10;
count++;
} else if(st >= 5) {
st -= 5;
count++;
} else if(st >= 2) {
st -= 2;
count++;
} else if(st >= 1) {
st -= 1;
count++;
}
}
console.log(count);
}
coins([1.23])
Това е с 1 while - като друг вариант за решение:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Coins
{
class Program
{
static void Main(string[] args)
{
double change = double.Parse(Console.ReadLine());
int countCoins = 0;
change = Math.Floor(change * 100); // change in coins
while (change > 0)
{
if (change>=200)
{
change = change - 200;
countCoins++;
}
else if (change>=100)
{
change = change - 100;
countCoins++;
}
else if (change>=50)
{
change = change - 50;
countCoins++;
}
else if (change>=20)
{
change = change - 20;
countCoins++;
}
else if (change >= 10)
{
change = change - 10;
countCoins++;
}
else if (change >= 5)
{
change = change - 5;
countCoins++;
}
else if (change >= 2)
{
change = change - 2;
countCoins++;
}
else if (change >= 1)
{
change = change - 1;
countCoins++;
}
}
Console.WriteLine(countCoins);
}
}
}