Автор Ёергей Кушнерчук задал вопрос в разделе Другие языки и технологии
Как реализовать алгоритм работы банкомата?) и получил лучший ответ
Ответ от 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 назад.
Это не тот принцип!
банкомат делает проще - выдает деньги только большими купюрами.. округляя
аоптом пищит - чт освячзь с банком потеряна) )
если попросишь - выдаст столько скольо даш. .
т. е. тут надо исходить из базы купюр которыеостались - выдавая чаще крпные. . потом омташиуюся - мелкими. . округляя. . но рубли то не загружают! минимум сотни!))
очень похоже на
http:
esheno.blogspot.com2009 626167274.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% рабочее и соответствует условиям
объясните алгоритм действий если банкомат не выдал деньги (зарплату)
Нафиг тебе алгоритм, если это было 2,5 месяца назад, спросила уж через 10
подробнее...
как работают сенсорные мобилы? какой принцип???
Сенсорный экран на телефонах — устройство ввода информации, представляющее собой экран, реагирующий
подробнее...
QIWI кошелек. Как можно пополнить qiwi кошелек через сотовых операторов в Казахстане?
1. Выберите в качестве способа оплаты «QIWI Кошелек» .
2. Далее укажите номер своего
подробнее...