Решение задач по Exel

В зале кинотеатра n рядов по m мест в каждом. Кинотеатр недавно открылся, и Вас попросили написать недостающую часть программного обеспечения для терминала продажи билетов. А именно, вам нужно написать программу для определения того, на какой ряд продать билет покупателю.

В начальный момент все места в зале свободны. Потом начинают подходить зрители. Зритель номер i хочет купить билет в ai-м ряду.Если весь ai ряд занят, то покупатель может купить себе место и в другом ряду, но такое, чтобы расстояние от выбранного ряда до желаемого было как можно меньше. Если таких рядов два,

то он выберет ряд с наибольшим номером. Например, если покупатель хочет билет на полностью занятый третий ряд, а второй и четвёртый свободны, он возьмёт билет на четвёртый.

Для каждого покупателя нужно выдать ряд, на который ему будет продан билет.

Формат входных данных

 

В диалоге ввести  целые числа n и m (1 ≤ n, m ≤ 100)— количество рядов и мест в ряду, соответственно. задано целое число k— количество покупателей,

пришедших за билетами (1 ≤ k n * m).

Далее, заполнить массив  ai— номера желаемых рядов (1≤ ai n) генератором случайных чисел.

Результаты

Для каждого покупателя выведите номер ряда, на который ему будет продан билет. Если программа составлена на VBA, то вывести во  второй столбец номера желаемых рядов и  в третий столбец номера полученных рядов.

 

2. Технологии программирования (15 баллов)*

В банкомате есть купюры различных номиналов. После того, как человек отправляет запрос на выдачу ему некоторой суммы, программа, установленная в банкомате, определяет, сколько и каких купюр необходимо выдать этому человеку, чтобы выданная сумма была не больше запрошенной, но при этом максимально близка к ней. Происходит это следующим образом.

В первую очередь выдаются купюры самого большого номинала. Если эти купюры кончаются в банкомате, или если добавление еще одной купюры делает сумму больше запрашиваемой, то начинают выдаваться купюры номинала, второго по величине, и т. д. Так происходит до тех пор, пока выдаваемая сумма не будет в точности равна запрошенной, либо же пока не выяснится, что суммы не равны, но меньших купюр нет.

Вам необходимо разработать программу, обрабатывающую запросы к банкомату. Даны изначальные количества купюр каждого номинала и список запросов. Необходимо сообщить, какие суммы будут выданы по каждому запросу. При этом, естественно, нужно учитывать, что после каждого запроса число купюр в банкомате уменьшается.

Формат входных данных

Задать число n (1 ≤ n ≤ 10)— количество различных типов купюр.

Описать все возможные типы купюр: каждый тип характеризуются двумя числами ci и di (1 ≤ сi ≤ 5000, 1 ≤ di ≤ 100)— номинал купюры и количество купюр такого номинала. Типы купюр даны в порядке уменьшения номинала. Каждый следующий номинал является делителем предыдущего.

Далее задать число m (1 ≤m ≤ 100)— количество поступивших запросов. В следующих m строках описаны запросы в порядке их поступления. Каждый запрос характеризуется одним числом xi (1 ≤ xi ≤ 100000)— запрашиваемой суммой.

Результаты

вывести результаты обработки всех запросов в порядке поступления, по одному на строке. По каждому запросу выведите количество и номинал выданных купюр и сумму, выданную пользователю после обработки запроса.

 

*при оценке решения задач по программированию учитывается рациональное использование структур данных и алгоритмов. На тестовых примерах регистрируется время выполнения программ.

 

Вопрос закрыт

Анатолий

от 50 p.
Сейчас на сайте
Читать ответы

Елена Васильевна

от 80 p.
Читать ответы

Виктор Щебетун

от 50 p.
Читать ответы
Посмотреть всех экспертов из раздела Учеба и наука > Информатика
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store