javascript - js 中的 ATM 货币面额程序,可以灵活地处理和分配最少的纸币

标签 javascript typescript

代码应该能够处理高达 20000 的任何金额,例如,假设当卡中的余额为 3000 时,输入的金额为 2600。将输出以下内容: 新百伦 - 400 笔记: 2000 * 1 500 * 1 100 * 1

(只有2000、500、100三张纸币)且现金限额为20000

我是 javascript 世界的新手,我不会编写代码,有人可以帮我吗???请!

var h = 5;
var f = 2;
var t = 1;


var ifAmtLessThn2000 = ifAmtLessThn2000(n) {
    var temp;
    if (n < 500) {
        h += (n / 100);
        return {
            h
        }
    } else if (n >= 500 && n < 2000) {
        f += n / 500;
        h += (n - 500) / 100;
        return {
            h,
            f
        }
    } else {
        temp = n - 1500;
        if (temp < 500) {
            h += (temp / 100);
            return {
                h
            }
            console.log('hundred : ' + h);
        } else {
            f += 1;
            h += (temp - 500) / 100;
            console.log('five hundred : ' + f);
            console.log('hundred : ' + h);
            return {
                f,
                h
            }
        }
    }
}


var ifAmtGreaterthan2000 = (n) => {
    var h = 0;
    var f = 0;
    var t = 0;
    var tt = 0;
    var temp;

    if (n < 2000) {
        tt += (n / 2000);
    }
    else if (n >= 2000 && n < 10000) {
        f += n / 500;
        h += (n - 500) / 100;
    }
    else {
        temp = n - 1500;
        if (temp < 500) {
            h += (temp / 100);
        }
        else {
            f += 1;
            h += (temp - 500) / 100;
        }
    }
}




var checkAmt = (n) => {
    if (n < 100 || (n % 100) > 0) {
        console.log("Invalid Amount : less than 100 ");
    } else {
        if (n > 20000) {
            console.log("ATM Cash Limit exceeds.");
        } else {
            if (n <= 2500) {
                ifAmtLessThn2500(n);
                console.log(h + " x 100");
                console.log(f + " x 500");
            } else {
                temp = n - 2500;
                t += temp / 1000;
                if (temp > 500)
                    temp = temp - (1000 * (t - 1));
                ifAmtLessThn2500(temp);
                console.log(h + " x 100");
                console.log(f + " x 500");
                console.log(t + " x 1000");
            }
        }
    }

}

checkAmt(2500);

抱歉,这是一个愚蠢的程序,但我需要帮助,谁能给我一个 typeScript 代码的解决方案,返回数组中的请求面额!!

最佳答案

const withdraw = (amount) => {
  let hundredNotes = 0;
  let fiftyNotes = 0;
  let twentyNotes = 0;

  while (amount >= 20) {
    if (
      amount >= 100 &&
      ((amount % 100) % 50 === 0 || (amount % 100) % 20 === 0)
    ) {
      amount -= 100;
      hundredNotes++;
    } else if (
      amount >= 50 &&
      ((amount % 50) % 100 === 0 || (amount % 50) % 20 === 0)
    ) {
      amount -= 50;
      fiftyNotes++;
    } else {
      amount -= 20;
      twentyNotes++;
    }
  }
  return [hundredNotes, fiftyNotes, twentyNotes];
};


console.log(withdraw(230));

console.log(withdraw(250));

关于javascript - js 中的 ATM 货币面额程序,可以灵活地处理和分配最少的纸币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50325935/

相关文章:

php - 当用户第一次访问我的网站时制作 css 样式的文本

angular - 未知 "google is not defined"Angular 6 中的 Google map 集成

typescript - 是否可以实现 Y-combinator 的 TypeScript 通用版本?

typescript - @Transform() Boolean Cast 不适用于 DTO

javascript - 我该如何做才能使路径在内容下方延伸?

javascript - jQuery 与 ASP.NET - 防止链接滚动到页面顶部

angular - 未捕获( promise ): false

angular - 取消订阅服务内部的 Observables?

javascript - 如何在 5 分钟不活动后更改页面位置

javascript - 宏Eval函数