Решение задач по 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.
Читать ответы

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

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

Саргузина Дарья

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