Здрасти!Помогите пожалуйста решить задачу: Синтезировать автомат по продаже билетов
Здрасти!Помогите пожалуйста решить задачку:
Синтезировать автомат по продаже билетов ценою 5 руб. Автомат может принимать монеты 1,2,5 руб. Сдачу автомат не выдает. При вводе неправильной сумы сброс средств назад
1 ответ
Стрестин
Колян
// PascalABC.NET 3.3, сборка 1579 от 18.11.2017
// Внимание! Если программка не работает, обновите версию!
begin
// В целях упрощения логики программы варианты
// выбора кнопок 0 и * вместе не рассматриваются
//
Writeln('Опускайте монеты достоинством 1,2,5 руб.');
Writeln('Кнопка "0" окончание приема, кнопка "*" - возврат монет');
var s:=ReadlnString;
var p:=Pos('*',s);
if pgt;0 then begin
var sr:=s[:p].ToIntegers;
if sr.Sumgt;0 then Writeln('Возврат монет: ',s[:p])
else Writeln('Нечего отдавать!')
end
else begin
p:=Pos('0',s);
if pgt;0 then begin
s:=s[:p];
var a:=s.ToIntegers;
if a.Lengthgt;0 then begin
var acc:=a.Where(t-gt;t in [1,2,5]);
var rej:=a.Where(t-gt;not(t in [1,2,5]));
if rej.Countgt;0 then Writeln('Не приняты: ',rej);
var sum:=acc.Sum;
if sum mod 5lt;gt;0 then begin
Writeln('Введена неправильная сумма');
Write('Принятые монеты возвращены: ');
acc.OrderBy(t-gt;t).Println
end
else
if sumgt;0 then
Writeln('Получите билеты в количестве ',sum div 5,' шт.')
end
else
Writeln('Вы не опустили ни одной монеты')
end
else
Writeln('Вы не избрали кнопку "0" или "*"')
end
end.
Примеры
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" завершение приема, кнопка "*" - возврат монет
3 6 3 1 3 5 2 5 2 4 2 3 6 2 1 0
Не приняты: [3,6,3,3,4,3,6]
Получите билеты в количестве 4 шт.
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" завершение приема, кнопка "*" - возврат монет
3 6 3 1 3 5 2 5 2 4 2 3 6 2 1 *
Возврат монет: 3 6 3 1 3 5 2 5 2 4 2 3 6 2 1
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" окончание приема, кнопка "*" - возврат монет
3 6 3 1 3 5 2 4 2 3 6 2 1 0
Не приняты: [3,6,3,3,4,3,6]
Введена неправильная сумма
Принятые монеты возвращены: 1 1 2 2 2 5
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" завершение приема, кнопка "*" - возврат монет
3 6 3 7 3 4 3 8 6 0
Не приняты: [3,6,3,7,3,4,3,8,6]
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" окончание приема, кнопка "*" - возврат монет
0
Вы не опустили ни одной монеты
// Внимание! Если программка не работает, обновите версию!
begin
// В целях упрощения логики программы варианты
// выбора кнопок 0 и * вместе не рассматриваются
//
Writeln('Опускайте монеты достоинством 1,2,5 руб.');
Writeln('Кнопка "0" окончание приема, кнопка "*" - возврат монет');
var s:=ReadlnString;
var p:=Pos('*',s);
if pgt;0 then begin
var sr:=s[:p].ToIntegers;
if sr.Sumgt;0 then Writeln('Возврат монет: ',s[:p])
else Writeln('Нечего отдавать!')
end
else begin
p:=Pos('0',s);
if pgt;0 then begin
s:=s[:p];
var a:=s.ToIntegers;
if a.Lengthgt;0 then begin
var acc:=a.Where(t-gt;t in [1,2,5]);
var rej:=a.Where(t-gt;not(t in [1,2,5]));
if rej.Countgt;0 then Writeln('Не приняты: ',rej);
var sum:=acc.Sum;
if sum mod 5lt;gt;0 then begin
Writeln('Введена неправильная сумма');
Write('Принятые монеты возвращены: ');
acc.OrderBy(t-gt;t).Println
end
else
if sumgt;0 then
Writeln('Получите билеты в количестве ',sum div 5,' шт.')
end
else
Writeln('Вы не опустили ни одной монеты')
end
else
Writeln('Вы не избрали кнопку "0" или "*"')
end
end.
Примеры
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" завершение приема, кнопка "*" - возврат монет
3 6 3 1 3 5 2 5 2 4 2 3 6 2 1 0
Не приняты: [3,6,3,3,4,3,6]
Получите билеты в количестве 4 шт.
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" завершение приема, кнопка "*" - возврат монет
3 6 3 1 3 5 2 5 2 4 2 3 6 2 1 *
Возврат монет: 3 6 3 1 3 5 2 5 2 4 2 3 6 2 1
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" окончание приема, кнопка "*" - возврат монет
3 6 3 1 3 5 2 4 2 3 6 2 1 0
Не приняты: [3,6,3,3,4,3,6]
Введена неправильная сумма
Принятые монеты возвращены: 1 1 2 2 2 5
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" завершение приема, кнопка "*" - возврат монет
3 6 3 7 3 4 3 8 6 0
Не приняты: [3,6,3,7,3,4,3,8,6]
Опускайте монеты достоинством 1,2,5 руб.
Кнопка "0" окончание приема, кнопка "*" - возврат монет
0
Вы не опустили ни одной монеты
Старобанова
Оленька
Спасибо для вас огромное!!!А вы можете еще посодействовать с заданием?
Оленька Инрубская
а вот это задание сможете помочь?znanija.com/task/26477650
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
Облако тегов