алгоритм работы банкомата



Автор Ёергей Кушнерчук задал вопрос в разделе Другие языки и технологии

Как реализовать алгоритм работы банкомата?) и получил лучший ответ

Ответ от Gennady[гуру]
Доброго времени суток.
Попробуйте использовать целочисленное деление. Ваш пример 3540.
3540 div 5000 = 0 3540-0*5000=3540
3540 div 1000 = 3 3540-3*1000=540
540 div 500 = 1 540-1*500=40
40 div 100 = 0
40 div 50 = 0
40 div 10 = 4
Как-то так.. Если выдаваемые купюры вы занесете в массив, то программка получися довольно короткой. Правда здесь не реализована возможность выдавать требуемыми купюрами.
Удачи!
ЗЫ На паскале реализация может быть такой
const
Money : array[1..6] of Integer = (5000,1000,500,100,50,10);
var
N, M, i, K : Integer;
begin
Readln(N);
M := N;
i := 1;
while M > 0 do begin
K := M div Money[ i ];
M := M - K * Money[ i ];
if K > 0 then WriteLn(K, ' купюр по ', Money[ i ]);
i := i + 1;
end;
ReadLn;
end.
Gennady
(51359)
Не понял, где ноль купюр по 500? Вы делаете это последовательно, начиная с больших купюр и выводите только отличные от нуля результаты деления.

Ответ от Дмитрий Оношко[гуру]
Стучись, несложная задачка. Была на городской олимпиаде лет 6 назад.

Ответ от Иван Иваноы[гуру]
Это не тот принцип!
банкомат делает проще - выдает деньги только большими купюрами.. округляя
аоптом пищит - чт освячзь с банком потеряна) )
если попросишь - выдаст столько скольо даш. .
т. е. тут надо исходить из базы купюр которыеостались - выдавая чаще крпные. . потом омташиуюся - мелкими. . округляя. . но рубли то не загружают! минимум сотни!))

Ответ от Vinnitu[гуру]
очень похоже на
http:
esheno.blogspot.com2009626167274.html

Ответ от Гиви Нахутчаров[гуру]
j-переменная
int1[5]-массив
int2[5]-массив 2
int2[0]=10
in2t[1]=50
int2[2]=100
int2[3]=500
int2[4]=1000
int2[5]=5000
for(i=5;i<5;i--){
int count=1
int s=0;
while(count){
if(j>int2){
j=j-int2; count=1;s++
}else{count=0;}}
int1=s;
}

Ответ от Алексей Пастухов[гуру]
скорее нужно сделать счетчик (А) имеющихся купюр
далее обнуленные переменные (В) для каждого номинала купюр
в циклах по номиналам
_____пока сумма больше номинала и счетчик (А) не равен нулю увеличиваем переменную (В) и уменьшаем счетчик (А) и уменьшаем сумму на номинал
так по всем номиналам
если после этого сумма не равна нулю извиняемся и сообшаем что можем выдать только запрошенная сумма минус остаток
далее если переменная номинала равна нулю в итог не выводится иначе выводим
вроде все
не самое кудрявое но 100% рабочее и соответствует условиям

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Как реализовать алгоритм работы банкомата?)
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*