В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Rukgz
Rukgz
01.11.2021 12:07 •  Информатика

Решить : синтезировать автомат по продаже билетов стоимостью 5 руб. автомат может принимать монеты 1,2,5 руб. сдачу автомат не выдает. при вводе неверной сумы – сброс денег обратно

Показать ответ
Ответ:
Ангелина545454
Ангелина545454
07.10.2020 07:16
// PascalABC.NET 3.3, сборка 1579 от 18.11.2017
// Внимание! Если программа не работает, обновите версию!

begin
  // В целях упрощения логики программы варианты
  // выбора кнопок 0 и * вместе не рассматриваются
  //
  Writeln('Опускайте монеты достоинством 1,2,5 руб.');
  Writeln('Кнопка "0" завершение приема, кнопка "*" - возврат монет');
  var s:=ReadlnString;
  var p:=Pos('*',s);
  if p>0 then begin
    var sr:=s[:p].ToIntegers;
    if sr.Sum>0 then Writeln('Возврат монет: ',s[:p])
    else Writeln('Нечего возвращать!')
    end
  else begin
    p:=Pos('0',s);
    if p>0 then begin
      s:=s[:p];
      var a:=s.ToIntegers;
      if a.Length>0 then begin
        var acc:=a.Where(t->t in [1,2,5]);
        var rej:=a.Where(t->not(t in [1,2,5]));
        if rej.Count>0 then Writeln('Не приняты: ',rej);
        var sum:=acc.Sum;
        if sum mod 5<>0 then begin
          Writeln('Введена неверная сумма');
          Write('Принятые монеты возвращены: ');
          acc.OrderBy(t->t).Println
          end
        else
          if sum>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
Вы не опустили ни одной монеты
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота