Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2023, 11:33   #1
YaLubluMamu
Пользователь
 
Регистрация: 22.10.2022
Сообщений: 37
По умолчанию Python. Программа "Банкомат"

Напишите программу, имитирующую работу банкомата. Выберите структуру данных для хранения купюр разного достоинства в заданном количестве. При вводе пользователем запрашиваемой суммы денег, скрипт должен вывести на консоль количество купюр подходящего достоинства. Если имеющихся денег не хватает, то необходимо напечатать сообщение «Операция не может быть выполнена!». Например, при сумме 5370 рублей на консоль должно быть выведено «5*1000 + 3*100 + 1*50 + 2*10».
YaLubluMamu вне форума Ответить с цитированием
Старый 27.02.2023, 11:51   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Банкоматы мелочь не выдают...
https://www.programmersforum.ru/showthread.php?t=345179

Если чуть-чуть подумаете, то поймете, что это просто.
Достаточно написать несколько циклов или подпрограмму с параметрами цикла и несколько вызовов
Код:
account = int(input("Введите сумму: ").strip())
outputStr = "Операция не может быть выполнена!"
# Первый элемент - номинал купюры
# Второй элемент - количество купюр этого номинала в банкомате
# Третий элемент - количество купюр для выдачи
bankomat = [[5000, 10, 0], [1000, 10, 0], [500, 10, 0], [100, 10, 0], [50, 10, 0], [10, 10, 0], [5, 10, 0], [2, 10, 0], [1, 10, 0]]

for i in range(len(bankomat)):
	bankomat[i][2] = 0
	while (account >= bankomat[i][0]) and (bankomat[i][1] > 0):
		account, bankomat[i][2] = account - bankomat[i][0], bankomat[i][2] + 1
	if account == 0:
		break

# Если сумму удалось собрать, тогда значение переменной будет равно 0
if account == 0:
	j = 0 # Пропускаем первые номиналы, которые не выдаются (количество равно 0)
	while (j < len(bankomat)) and (bankomat[j][2] == 0):
		j += 1
	if j < len(bankomat):
		outputStr = str(bankomat[j][2]) + "*" + str(bankomat[j][0])
		for i in range(j + 1, len(bankomat)):
			if bankomat[i][2] != 0:
				outputStr += " + " + str(bankomat[i][2]) + "*" + str(bankomat[i][0])
		# Иначе ОБХСС загребет
		for i in range(len(bankomat)):
			bankomat[i] = [bankomat[i][0], bankomat[i][1] - bankomat[i][2], 0]
print(outputStr)
Код:
$ python3 test.py
Введите сумму: 62999
10*5000 + 10*1000 + 1*500 + 4*100 + 1*50 + 4*10 + 1*5 + 2*2

$ python3 test.py
Введите сумму: 99999
Операция не может быть выполнена!

Последний раз редактировалось macomics; 27.02.2023 в 14:30.
macomics вне форума Ответить с цитированием
Старый 27.02.2023, 12:01   #3
YaLubluMamu
Пользователь
 
Регистрация: 22.10.2022
Сообщений: 37
По умолчанию

Я знаю. Это задание из лабы, просто подскажите хотя бы как это решить
YaLubluMamu вне форума Ответить с цитированием
Старый 27.02.2023, 12:39   #4
YaLubluMamu
Пользователь
 
Регистрация: 22.10.2022
Сообщений: 37
По умолчанию

Спасибо. Я чуть-чуть подумаю
YaLubluMamu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа "Банкомат" YaLubluMamu Python 8 27.02.2023 17:18
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Не прозрачный "ребёнок" на прозрачном "родителе" PyQt5 (видеоплеер) - Python Jhon Brown Python 5 29.03.2017 22:28
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
Программа "банкомат" Of_value Общие вопросы по Java, Java SE, Kotlin 1 06.10.2014 19:23