首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建ATM算法

创建ATM算法
EN

Stack Overflow用户
提问于 2014-01-02 18:26:14
回答 1查看 2K关注 0票数 2

我正在尝试创建ATM算法。逻辑如下:有三个面额100,500,1000

当数量为100时,输出为Print 1 100 Note

当数量为500时,输出为Print 5 100 Note

当数量为1000时,输出为Print 1 500 NotePrint 5 100 Note

因此,当数量为4500时,输出应该是

3 1000 Note

2 500 Note

5 100 Note

我的算法如下

代码语言:javascript
复制
   int _remainingamt = _inputAmt / 1000;

        if (_remainingamt > 1)
        {
            _inputAmt = _inputAmt - (_remainingamt-1) * 1000;
            Console.WriteLine("Print {0} 1000 Notes", _remainingamt - 1);
        }
        else
        {
            _inputAmt = _inputAmt - _remainingamt * 1000;
            Console.WriteLine("Print {0} 1000 Notes", _remainingamt);
        }

        _remainingamt = _inputAmt / 500;
        if (_remainingamt > 1)
        {
            _inputAmt = _inputAmt - (_remainingamt - 1) * 500;
            Console.WriteLine("Print {0} 500 Notes", _remainingamt - 1);
        }
        else
        {
            _inputAmt = _inputAmt - _remainingamt * 500;
            Console.WriteLine("Print {0} 500 Notes", _remainingamt);
        }

        _remainingamt = _inputAmt / 100;
        _inputAmt = _inputAmt - _remainingamt*100;
        if (_remainingamt!=0)
        {
            Console.WriteLine("Print {0} 100 Notes", _remainingamt);    
        }

这里的逻辑是金额的第一个500应该是100 NotesNotes

接下来的500个应该是500 NoteNotes

下一个1000(如果保持在这个数量内)应该是1000 NoteNotes

但我仍然面临着一定数量的问题。

有人能帮忙吗?

谢谢大家

EN

回答 1

Stack Overflow用户

发布于 2014-01-02 20:43:41

这是一个简单的程序,它将做你想要的事情。我不知道你发送的是什么值,这给你带来了问题,但我做了一点测试,我找不到任何。

你说过1000英镑你想要1500美元和5100英镑。由于自动取款机总是能开出最大的钞票,我想这一定是错的,如果我错了,请告诉我。

代码语言:javascript
复制
private static void Main(string[] args)
{
    var inputAmount = 4500;
    var intervals = new[] {100, 500, 1000};

    if (inputAmount%100 != 0)
    {
        Console.Write("Only bills of in increments of 100 are dispensed");
        return;
    }

    foreach (var interval in intervals.OrderByDescending(e => e))
    {
        int count = inputAmount/interval;
        inputAmount = inputAmount%interval;
        Console.WriteLine("{0} {1} Note", count, interval);
    }
    Console.Read();
}

这一产出是:

4 1000元 1 500支钞票 0100注

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20889336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档