nextupprevious

Next:6. Программы с процедурами и функциями
Up:5. Программы обработки структурированных
Previous:5.4.5 Упражнения


5.5 Задания

1. Сведения об экзамене содержат следующие данные: дисциплину (программирование, алгебра, история, геометрия), дату сдачи экзамена (год, месяц, день), сведения о студенте (факультет, курс, группа, номер в журнале) и экзаменационную оценку. Задан набор сведений об экзаменах, сданных студентами университета за последние несколько лет; в них факультет и предмет кодируются первыми буквами названия. Найти
количество неуспевающих (при N3 = 0),
количество отличников (при N3 = 1),
среднюю оценку (при N3 = 2)
по программированию на
математическом (при N < 10),
физическом (при 10 <= N < 20),
химическом (при 20 <= N)
факультете среди студентов
первого курса (при N2 = 0),
с четными номерами в журнале (при N2 = 1),
сдававших экзамены
 
летом 1989 г. (при N < 15),
зимой 1998 г. (при N >= 15).


В решении нельзя использовать массивы и следует предусмотреть возможность обработки заданной последовательности произвольной длины.

2. Справка о междугороднем телефонном разговоре содержит: номер телефона абонента (6 цифр), дату (год, месяц, день), время (час, минута), код города (3 цифры), номер телефона в другом городе (7 цифр), продолжительность разговора (в минутах), категорию (срочный, обычный) и тариф (плата в рублях за минуту). По заданной последовательности справок найти

дату (при N < 15),
время (при N >= 15)
такого телефонного разговора из заданной последовательности справок, который является максимальным по
продолжительности (при N5 = 0),
тарифу (при N5 = 1),
номеру телефона абонента (при N5 = 2),
коду города (при N5 = 3),
номеру телефона в другом городе (при N5 = 4)
среди срочных разговоров, состоявшихся
летом в дневное время (при N3 = 0),
осенью в вечернее время (при N3 = 1),
зимой в ночное время (при N3 = 2)
с телефонов, номера которых начинаются на 32 или 34.

В решении нельзя использовать массивы и следует предусмотреть возможность обработки заданной последовательности произвольной длины.

3. Деталь автомобиля описывается инвентарным номером (положительное целое число), весом (в килограммах), ценой (в рублях), датой начала производства (год, месяц, день), статусом (заказана или нет) и объемом производства (в штуках за смену). В заданной последовательности сведений о деталях найти инвентарный номер

первой в порядке описания (при N < 15),
последней в порядке описания (при N >= 15)
детали с
наибольшей (при N2 = 0),
наименьшей (при N2 = 1)
датой начала производства среди тех
заказанных (при N8 < 4),
незаказанных (при N8 >= 4)
деталей,
описаниям которых предшествует (при N16 < 8),
за описаниями которых следует (при N16 >= 8)
описание детали с минимальным
весом (при N4 >=2),
объемом производства (при N4 < 2)
среди всех заданных деталей. В решении нельзя использовать массивы и следует предусмотреть возможность обработки заданной последовательности произвольной длины.

4. Книга описывается формуляром, содержащим следующую информацию: разряд книги (задачник, учебник), дисциплину (программирование, алгебра, история, геометрия), год издания, объем (в страницах), цену (в рублях), место издания (Новосибирск, Москва, Минск, Киев) и количество экземпляров, имеющихся в библиотеке университета. Осуществить распечатку информации обо всех тех

книг по программированию (при N3 = 0),
задачников по алгебре (при N3 = 1),
учебников по истории (при N3 = 2)
из заданной последовательности формуляров, которые удовлетворяют
каждому (при N8 < 4),
хотя бы одному (при N8 >= 4)
из следующих двух условий:
1) среди предшествующих формуляров имеется формуляр учебника,
изданного до войны в Киеве (при N < 10),
имеющего объем в 200 страниц (при 10 <= N < 20),
с ценой меньше рубля (при N >= 20);
2) среди предшествующих формуляров нет формуляров задачников,
изданных в 2001 г. в Новосибирске (при N2 = 0),
превышающих по объему 300 страниц (при N2 = 1).
Обеспечить печать ответа в виде таблицы (с соответствующими заголовками колонок и всей таблицы), в которой каждая строка содержит информацию только из одного формуляра. В решении нельзя использовать массивы и следует предусмотреть возможность обработки заданной последовательности произвольной длины.

5. Задан вектор целых чисел . Построить вектор чисел , элемент $b_i$ которого получается как

минимум (при N6 = 0),
максимум (при N6 = 1),
сумма (при N6 = 2),
произведение (при N6 = 3),
сумма модулей (при N6 = 4),
среднее арифметическое (при N6 = 5)
всех тех элементов среди $a_i, a_{i+1},\ldots, a_{200}$, которые
положительны (при N5 = 0),
нечетны (при N5 = 1),
кратны трем (при N5 = 2),
являются полными квадратами (при N5 = 3),
являются кубами целых чисел (при N5 = 4).
Об исходном векторе известно, что 

6. Операция циклического сдвига вектора B на одну позицию вправо преобразует вектор следующим образом:

Аналогично, при циклическом сдвиге вектора на одну позицию влево он преобразуется следующим образом:

Построить циклический сдвиг заданного вектора

вещественных чисел (при N3 = 0),
целых чисел (при N3 = 1),
литер (при N3 = 2)
длины 70 N на N div  2 +2 позиций
вправо (при N2 = 0),
влево (при N2 = 1),
используя один и тот же массив для представления исходного, результирующего и всех промежуточных векторов.

7. Для заданных вектора A вещественных чисел длины 200 и перестановки B целых чисел 1,2,$\ldots$, 200 найти  (см. п. 5.3.4), где
    

8. Пусть задан упорядоченный по возрастанию вектор  вещественных чисел, вещественное x и монотонно возрастающая функция G(x). Тогда поиск такого  можно выполнять методом "дихотомии" следующим образом.

Поиск начинается извлечением "среднего" элемента то поиск завершен. Если же  то в силу монотонности G и упорядоченности A имеем  поэтому поиск требуемого значения $i$ можно продолжать описываемым методом, но уже в отрезке индексов от 1 до 99. Аналогично, если  наша задача сводится к поиску $i$ в отрезке от 101 до 200.

Пусть, далее, имеются функции

      

Требуется найти методом "дихотомии" такое i, что

     

Если такого $i$ нет, то в качестве ответа печатать текст "требуемого $i$ не существует".

9. Задана последовательность

литер (при N2 = 0),
целых чисел (при N2 = 1).
Напечатать те
гласные буквы латинского алфавита (при N6 = 0),
целые числа из отрезка -20..20 (при N6 = 1),
согласные буквы латинского алфавита (при N6 = 2),
четные целые числа из отрезка 0..100 (при N6 = 3),
кратные трем цифры (при N6 = 4),
нечетные целые числа из отрезка -10..10 (при N6 = 5),
которые встречаются в заданной последовательности
ровно один раз (при N5 = 0),
ровно два раза (при N5 = 1),
нуль раз (при N5 = 2),
не более трех раз (при N5 = 3),
не менее пяти раз (при N5 = 4).


10. Задан вектор вещественных чисел длины 10 N. Найти

сумму (при N5 = 0),
произведение (при N5 = 1),
сумму модулей (при N5 = 2),
количество (при N5 = 3),
сумму квадратов (при N5 = 4)
тех элементов вектора, которые
больше минимального из положительных (при N6 = 0),
меньше максимального из отрицательных (при N6 = 1),
больше полусуммы минимального и максимального
элементов вектора (при N6 = 2),
содержатся в отрезке [c-2, c+2], где c -- среднее
aрифметическое всех элементов вектора (при N6 = 3),
строго меньше всех следующих за ними (при N6 = 4),
превосходят хотя бы один из следующих за ними (при N6 = 5).

11. Задана последовательность формуляров 10 N книг, поступивших в библиотеку университета в последнее время (см. задание 5.7.4). Напечатать информацию, содержащуюся в формулярах, в виде отдельных таблиц для разных

разрядов (при N3 = 0),
дисциплин (при N3 = 1),
мест издания (при N3 = 2)
книг. При этом в таблицы не включаются сведения о книгах, удовлетворяющих
каждому (при N4 < 2),
хотя бы одному (при N4 >= 2),
из следующих двух условий:
1) количество экземпляров книги
превышает 10 штук (при N < 15),
является делителем года ее издания (при N >= 15),
2) сама книга
по объему превышает 500 страниц (при N2 = 0),
по цене не превышает 3 руб. (при N2 = 1).


12. Анкета студента содержит следующую информацию: фамилию (строку из 15 букв), пол, дату рождения (год, месяц, день), факультет, группу, номер в журнале, средний балл, отношение к комсомолу (член ВЛКСМ, выбыл по возрасту, исключен, не состоял), семейное положение (женат, холост).

Заданы наборы анкет 10 N студентов, составляющих стройотряд, и 20 студентов, составляющих команду КВН. Внутри наборов анкеты студентов команды и стройотряда упорядочены таким образом, что даты рождения анкетированных студентов

не возрастают (при N < 15),
не убывают (при N >= 15).
Определить
отношение к комсомолу (при N5 = 0),
семейное положение (при N5 = 1),
факультет (при N5 = 2),
группу (при N5 = 3),
номер в журнале (при N5 = 4)
одного из таких студентов, которые входят
только в стройотряд (при N3 = 0),
только в команду КВН (при N3 = 1),
как в стройотряд, так и в команду КВН (при N3 = 2).
Следует предусмотреть печать текстового сообщения, если нет ни одного такого студента, а также прекращение просмотра наборов анкет, как только будет найден ответ.

13. Метод "пузырька" является одним из очень простых для программирования (но не эффективным!) способом решения задачи сортировки -- расположения элементов последовательности в соответствии с заданным на них отношением порядка. Метод состоит в просмотрах элементов сортируемой последовательности, в процессе каждого из которых номер просматриваемого элемента изменяется от единицы до (K-I), где K -- число элементов в последовательности, $I$ -- номер просмотра, а каждый просматриваемый элемент последовательности сравнивается со своим правым соседом и меняется с ним местами, если их расположение противоречит отношению порядка. В результате первого просмотра на последнее место в последовательности ставится тот элемент, который должен там находиться. Затем свое место занимает элемент, который должен стоять предпоследним, и т.д. Осуществить методом "пузырька" сортировку набора из 30 N описаний экзаменов (см. задание 5.5.1)

по возрастанию (при N2 = 0),
по убыванию (при N2 = 1)
значений
годов (при N5 = 0),
месяцев (при N5 = 1),
дней (при N5 = 2),
групп (при N5 = 3),
номеров студентов в журналах (при N5 = 4),
предполагая, что при прочих равных условиях описания экзаменов упорядочиваются по возрастанию
курсов (при N3 = 0),
литер факультетов (при N3 = 1),
оценок (при N3 = 2).


14. Описанный в предыдущем задании метод "пузырька" часто используют в следующем модифицированном виде. После окончания очередного просмотра следующий просмотр производится только в том случае, если в ходе законченного просмотра была выполнена хотя бы одна перестановка; в противном случае сортировка считается законченной. Реализовать модифицированный метод "пузырька" для сортировки 20 N справок о междугородних телефонных разговорах (см. задание 5.5.2)

по возрастанию (при N <15),
по убыванию (при N >= 15)
их
годов в дате разговора (при N5 = 0),
месяцев в дате разговора (при N5 = 1),
дней в дате разговора (при N5 = 2),
часов во времени разговора (при N5 = 3),
минут во времени разговора (при N5 = 4)
предполагая, что при прочих равных условиях справки о разговорах упорядочиваются слева направо так, что
обычные разговоры предшествуют срочным (при N=0),
номера телефонов абонентов возрастают (при N3=1),
коды городов убывают (при N3 = 2).


15. Близким к методу "пузырька" является метод сортировки "по номерам", который реализуется следующим образом. Последовательным сравнением осуществляется поиск номера элемента, который должен стоять первым (при этом в процессе поиска запоминается не сам элемент, а только его порядковый номер!). После этого элемент с найденным номером меняется местами с первым элементом последовательности. Сортировка продолжается размещением второго элемента, для чего осуществляется поиск первого элемента среди всех элементов последовательности, начиная со второго, потом размещается по аналогичным правилам третий элемент и так далее до тех пор, пока не останется последовательность, состоящая из одного элемента. Осуществить методом сортировки "по номерам" упорядочение сведений о 20 N деталях (см. задание 5.5.3)

по возрастанию (при N >= 15),
по убыванию (при N < 15)
их
инвентарных номеров (при N4 = 0),
весов (при N4 = 1),
цен (при N4 = 2),
объемов производства (при N4 = 3),
предполагая, что все заказанные детали должны
предшествовать незаказанным (при N2 = 0),
следовать за незаказанными (при N1 = 1),
а при прочих равных условиях сведения о деталях располагаются в порядке возрастания
годов (при N3 = 0),
месяцев (при N3 = 1),
дней (при N3 = 2)
даты начала их производства.

16. Студент-хоккеист представлен в анкете следующей информацией: фамилия (слово длины 10), рост (в см), даты (год, месяц, день) рождения и вступления в команду, разряд (целое число), факультет (физик, математик, химик), курс, количество заброшенных шайб. Редукция списка анкет студентов состоит в удалении из него анкет тех однофамильцев первого студента, которые удовлетворяют

каждому (при N8 < 4),
хотя бы одному (при N8 >= 4)
из следующих условий:
1) студент является
дипломником-химиком (при N < 15),
физиком двух старших курсов (при N >= 15),
2) студент имеет
рост выше 2 м (при N2 = 0),
разряд ниже третьего (при N2 = 1).


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

годы рождения (при N5 = 0),
месяцы рождения (при N5 = 1),
дни рождения (при N5 = 2),
месяцы вступления в команду (при N5 = 3),
заброшенные шайбы (при N5 = 4)
студентов, анкеты которых расположены подряд в редуцированном списке.

17. Задан вектор вещественных чисел  Построить вещественную матрицу B размером 10 х 10, в которой элемент  равен

18. Задана матрица целых чисел размером 20 х 20. Найти

минимальный (при N2 = 0),
максимальный (при N2 = 1)
среди таких ее элементов 200#86, расположенных
выше главной (при N4 = 0),
ниже главной (при N4 = 1),
выше побочной (при N4 = 2),
ниже побочной (при N4 = 3),
диагонали, для которых справедливо следующее свойство:
x > 0 (при N5 = 0),
x -- полный квадрат (при N5 = 1),
x -- нечетный (при N5 = 2),
x mod 3 = 1 (при N5 = 3),
x -- четный отрицательный (при N5 = 4).
Если в указанной части матрицы элементов с требуемым свойством нет, в качестве ответа печатать текст "нет элементов с требуемым свойством".

19. Задана матрица A вещественных чисел размером 20 х 20. Построить по ней матрицу B того же размера, элемент  которой равен

минимуму (при N5 = 0),
сумме модулей (при N5 = 1),
максимуму (при N5 = 2),
сумме (при N5 = 3),
произведению (при N5 = 4)
всех тех элементов матрицы A , которые расположены в следующей ее части, определяемой по i, j с помощью проведения линий, параллельных строкам, столбцам, главной и побочной диагоналям (определяемая часть включает границы) -- рис. 5.12.


Рис. 5.12. Матрица с выделенной частью




20. Пусть

Пусть, далее, заданы две матрицы вещественных чисел размером 20 х 20:  Построить по ним матрицу  того же размера, элемент(см. 5.3.4)

21. Задана матрица целых чисел размером 20 х 20. Найти

минимальный (при N2 = 0),
максимальный (при N2 = 1)
среди номеров
строк (при N4< 2),
столбцов (при N4>= 2)
этой матрицы, в которых находится вектор, упорядоченный по
возрастанию (при N2 = N3),
убыванию (при N2 # N3)
и составленный из элементов, которые все
положительны (при N5 = 0),
отрицательны (при N5 = 1),
являются полными квадратами (при N5 = 2),
четны (при N5 = 3),
дают остаток 1 при делении на 3 (при N5 = 4).
Если в матрице нет ни одного вектора, удовлетворяющего требуемым свойствам, в качестве ответа печатать текст "нет строки (столбца) с требуемым свойством".

22. Дана целочисленная матрица A размера n x m, где n = N + 25. Найти координаты (т.е. номера строки и столбца)

максимального (при N2 = 0),
минимального (при N2 = 1)
по значению такого элемента матрицы, который
1) является кодом
буквы (при N8 < 4),
цифры (при N8 >= 4),
2) расположен
выше побочной (при N4 = 0),
выше побочной (при N4 = 1),
выше главной (при N4 = 2),
ниже главной (при N4 = 3),
диагонали,
3) имеет среди соседей
в строке (при N8 < 4),
в столбце (при N8 >= 4),
нечетное число.

23. Дана вещественная матрица размера n x n, где n =N+30. Рассматривая ее как последовательность векторов, являющихся

строками (при N2 = 0),
столбцами (при N2 = 1)
матрицы, упорядочить вектора в ней по
неубыванию (при N6 < 3),
невозрастанию (при N6 >= 3)
значений
максимумов из (при N4 = 0),
минимумов из (при N4 = 1),
сумм (при N4 = 2),
произведений (при N4 = 3)
всех тех элементов векторов, которые
лежат в интервале [-1,1] (при N8 < 4),
не превышают номера вектора (при N8 >= 4).


24. Дана целочисленная матрица A размера n x n, где n = N + 20. Построить логический вектор B = () размера $n$, в котором $b_i$ принимает истинное значение тогда и только тогда, когда

i-я строка (при N2 = 0),
i-й столбец (при N2 = 1)
матрицы A удовлетворяет
каждому (при N3 = 0),
хотя бы одному (при N3 = 1),
ровно одному (при N3 = 2)
из следующих трех свойств:
1) элементы в векторе C расположены по
невозрастанию (при N4 < 2),
неубыванию (при N4 >= 2)
2) C содержит не более $i$
четных (при N8 < 4),
кратных пяти (при N8 >= 4)
положительных элементов,
3) для всех j, 1<j<n,

25. Построить вещественную матрицу размера n x n, где n = N + 20, образованную из последовательности

строк (при N2 = 0),
столбцов (при N2 = 1)

Next:6. Программы с процедурами и функциями
Up:5. Программы обработки структурированных
Previous:5.4.5 Упражнения


© В.Н. Касьянов, Е.В.Касьянова, 2004