Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа No

.2.pdf
Скачиваний:
23
Добавлен:
14.03.2016
Размер:
137.98 Кб
Скачать

Лабораторная работа №2 "Альтернативные действия"

ТРЕБОВАНИЯ К РЕШЕНИЮ, КОДУ И ПРОТОКОЛУ ЛАБОРАТОРНОЙ РАБОТЫ

ТРЕБОВАНИЯ К РЕШЕНИЮ ЗАДАЧИ (СРС)

Минимальные требования к решению задачи (СРС)

задача работает на всех тестах и тестировалась не более пяти раз

если входные данные не соответствуют условию задачи, то программа

должна выдавать сообщение соответствующее ошибочной ситуации (использовать макрос error_printf) и корректно завершаться. Пример №1: если радиус окружности должен быть задан в диапазоне [1, 12], то при вводе нулевого значения должно выдаваться примерно следующее сообщение "Radius out of range (выход радиуса за пределы значений)". Пример №2: прямоугольник, стороны которого параллельны осям координат, задается четырьмя вершинами; если введенные координаты не удовлетворяют заданному условию, то должно выдаваться примерно следующее сообщение "Invalid rectangle (задан неверный прямоугольник)".

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

Дополнительные требования к решению задачи (СРС)

задача работает на всех тестах

Бонусы за решение задачи (СРС)

задача работает на всех тестах с первого раза

ТРЕБОВАНИЯ К РЕШЕНИЮ ЗАДАЧИ (ОТЧЕТНОЕ ЗАДАНИЕ)

задача работает на всех тестах

1

Лабораторная работа №2 "Альтернативные действия"

Бонусы за решение задачи (отчетное задание)

задача работает с первого раза

своевременность

повышенная сложность

ТРЕБОВАНИЯ К КОДУ

Минимальные требования к коду

запрещается использовать массивы и циклы;

запрещается использовать глобальные и статические переменные;

запрещается использовать операторы, изменяющие нормальный ход выполнения программы: goto, continue, break (за исключением оператора switch);

запрещается использовать оператор return, если функция не возвращает значения; если функция возвращает значение, то оператор должен использоваться только один раз;

не допускается использование одной и той же переменной для хранения разной по смыслу информации;

минимальные требования к оформлению кода.

Дополнительные требования к коду

запрещается выполнение двух и более альтернативных действий за один «прогон» программы, даже если программа выдает правильные результаты;

необходимо минимизировать кол-во анализируемых условий в условных операторах;

необходимо минимизировать размер условий, путем использования дополнительных флагов (если в условии встречается более 3 логических операций);

необходимо использовать такие типы данных, которые бы минимизировали объем используемой памяти;

дополнительные требования к оформлению кода.

ТРЕБОВАНИЯ К ПРОТОКОЛУ

Минимальные требования к протоколу

имеются все пункты протокола и они верны (в алгоритме могут отсутствовать обобщающие действия);

алгоритм должен соответствовать программе.

2

Лабораторная работа №2 "Альтернативные действия"

Дополнительные требования к протоколу

в алгоритме имеются обобщающие действия и они верны.

3

Лабораторная работа №2 "Альтернативные действия"

СПЕЦИАЛЬНЫЕ ЗНАНИЯ, НЕОБХОДИМЫЕ ДЛЯ РЕШЕНИЯ ЗАДАЧ

ПРЯМАЯ ЛИНИЯ

Общее уравнение прямой линии: A*x + B*y + C = 0

Общее уравнение прямой линии с угловым коэффициентом: y = a*x + b Уравнение прямой, проходящей через две точки A1(x1, y1) и A2(x2, y2): (y2 - y1)*(x – x1) = (x2 - x1)*(y – y1)

Условием параллельности прямых линий, заданных уравнениями y= a1*x + b1

y= a2*x + b2

служит равенство угловых коэффициентов a1 = a2

Условием перпендикулярности прямых линий, заданных уравнениями y= a1*x + b1

y= a2*x + b2

служит соотношение a1*a2 = -1

Для разыскания точки пересечения прямых линий, заданных уравнениями A1*x + B1*y + C1 = 0

A2*x + B2*y + C2 = 0

необходимо решить указанную систему уравнений.

Расстояние d от точки M1(x1, y1) до прямой линии A*x + B*y + C = 0:

d = abs((A*x1 + B*y1 +C)/sqrt(A2 + B2)), где abs(z) – модуль числа z, sqrt(v) – корень квадратный числа v

Уравнение прямой, проходящей через точку А1(x1, y1) перпендикулярно прямой A*x + B*y + C = 0:

A*(y – y1) + B*(x – x1) = 0

ТРЕУГОЛЬНИК

b

α

c

 

 

 

h

γ

 

β

 

 

 

 

a

 

Полупериметр p = (a + b + c)/2

Радиус вписанной окружности r. Радиус описанной окружности R. Площадь треугольника S:

4

Лабораторная работа №2 "Альтернативные действия"

S= ½*h*a = ½*a*b*sinγ = sqrt(p*(p-a)*(p-b)*(p-c)) = a*b*c/(4*R) = p*r, где sqrt(v) – корень квадратный числа v

Теорема синусов: a/sinα = b/sinβ = c/sinγ = 2*R Теорема косинусов: с2 = a2 + b2 – 2*a*b*cosγ

Тип внутреннего угла (тупой, острый, прямой) можно определить по знаку косинуса этого угла.

СОВРЕМЕННЫЙ КАЛЕНДАРЬ

В современном календаре каждый год, номер которого делиться на 4 является високосным, за исключением тех номеров, которые делятся на 100 и не делятся на 400.

5

Лабораторная работа №2 "Альтернативные действия"

 

 

 

 

 

 

 

 

 

 

 

Задача

 

 

 

Ф

 

 

 

 

 

 

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

О

 

 

 

 

 

 

 

 

 

1

Формулировка. Даны два отрезка: один отрезок располагается под другим

 

 

 

(смотри рисунок). Определите видимые концы отрезков, если смотреть

 

 

 

 

сверху. Концы отрезка должны выводиться в порядке возрастания x-

 

 

 

 

координаты.

 

 

 

 

 

 

 

 

 

 

 

 

Формат входных данных: [x-координата левого конца верхнего отрезка] [x-

 

 

координата правого конца верхнего отрезка] [x-координата левого конца

 

 

нижнего отрезка] [x-координата правого конца нижнего отрезка].

 

 

 

 

Координаты задаются целыми числами в диапазоне ±1000. Проверять порядок

 

 

ввода концов отрезков (сначала левый, затем - правый). Пример: 1 5 3 8

 

 

Формат выходных данных: [x-координата точки] [пробел] [x-координата

 

 

 

 

точки] и т.д. Пример:

1 5 8

 

 

 

 

 

 

 

 

1

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

5

8

 

 

 

 

 

 

 

 

 

Модификация:

 

 

 

 

 

 

 

 

 

 

 

 

[0.8]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0.8]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0.9]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[1.2]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

Формулировка.

Даны

числа х1, y1, х2, у2, x3, у3 - координаты трех

 

 

 

вершин прямоугольника со сторонами, параллельными осям координат

 

 

(порядок вершин не задан). Определите координаты его четвертой вершины.

 

 

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

[x1] [y1] [x2] [y2] [x3] [y3]. Координаты

 

 

 

 

задаются целыми числами в диапазоне ±1000. Пример: 1 5 3 3 4 5

 

 

 

 

Формат выходных данных: [x-координата четвертой вершины] [пробел] [y-

 

 

координата четвертой вершины]. Пример:

5 5

 

 

 

 

 

 

Модификация:

 

 

 

 

 

 

 

 

 

 

 

 

[0.7]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0.9]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0.8]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[1.0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[1.0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[1.2]

 

 

 

 

 

 

 

 

 

 

 

 

 

3

Формулировка. Даны два прямоугольника, стороны которых параллельны осям

 

 

 

координат. Каждый из них определяется координатами левого верхнего и

 

 

правого

 

нижнего

углов.

Найдите

площадь

пересечения

 

двух

 

 

прямоугольников.

 

 

 

 

 

 

 

 

 

 

Формат входных данных: [x-координата левого верхнего угла первого

 

 

 

 

прямоугольника] [y-координата левого верхнего угла первого

 

 

 

 

прямоугольника] [x-координата правого нижнего угла первого

 

 

 

 

прямоугольника] [y-координата правого нижнего угла первого

 

 

 

 

прямоугольника] [x-координата левого верхнего угла второго

 

 

 

 

прямоугольника] [y-координата левого верхнего угла второго

 

 

 

 

прямоугольника] [x-координата правого нижнего угла второго

 

 

 

 

прямоугольника] [y-координата правого нижнего угла второго

 

 

 

 

прямоугольника]. Координаты задаются целыми числами в диапазоне ±1000.

 

 

Пример:

1

5

3

3 4 5

6

3

 

 

 

 

 

 

 

 

Формат выходных данных: [площадь (целое число)]. Пример: 0

 

 

Модификация:

[0.8]

[1.0]

[1.2]

6

Лабораторная работа №2 "Альтернативные действия"

Задача

Ф

И

 

 

О

4Формулировка. Заданы три числа: a, b, c. Определить, могут ли они быть сторонами прямоугольного треугольника.

Формат входных данных: [a] [b] [c]. Длины сторон задаются вещественными числами в диапазоне (0, 100]. Пример: 0.001 80.09 93.4 Формат выходных данных: [признак]: 0 – треугольник не может быть получен, 1 - треугольник может быть получен. Пример: 0

Модификация:

[0.6]

[0.7]

[0.9]

[0.9]

Формулировка. Четырехугольник ABCD задан координатами своих вершин на5

 

 

плоскости: A(x_a, y_a), B(x_b, y_b), С(x_с, y_с), D(x_d, y_d).

 

 

Определить

 

 

тип

четырехугольника:

прямоугольник,

параллелограмм,

 

 

трапеция, произвольный четырехугольник. Проверку на пересечение сторон

 

 

четырехугольника не выполнять.

 

 

 

 

 

 

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

 

[x_a] [y_a] [x_b] [y_b] [x_с] [y_с] [x_d] [y_d].

 

 

Координаты задаются целыми числами в диапазоне ±1000. Пример: 1 5 3 3 4

 

 

5

6

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Формат выходных данных: [тип четырехугольника]: 0 – прямоугольник или

 

 

квадрат, 1 — параллелограмм или ромб, 2 — трапеция, 3 – произвольный

 

 

четырехугольник (остальные варианты). Пример: 0. Если задан не

 

 

четырехугольник, то выдавать сообщение об ошибочном вводе данных.

 

 

Модификация:

 

 

 

 

 

 

 

 

 

 

 

 

 

[0.6]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[1.1]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[1.2]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

Формулировка.

Треугольник

 

ABC задан

координатами

своих вершин на

 

 

 

плоскости: A(x_a, y_a), B(x_b, y_b), С(x_с, y_с). Круги заданы

 

 

неравенствами

 

 

 

 

 

 

 

 

 

 

 

 

(x - a1)2 + (y – b1)2 ≤ r12; (x – a2)2 + (y – b2)2 ≤ r22. Определить,

 

 

находится ли треугольник полностью внутри хотя бы одного круга или он

 

 

располагается вне кругов.

 

 

 

 

 

 

 

 

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

 

[x_a] [y_a] [x_b] [y_b] [x_с] [y_с] [a1] [b1]

 

 

[r1] [a2] [b2] [r2]. Координаты задаются целыми числами в диапазоне

 

 

±1000. Радиус окружности задается целым число в диапазоне [1, 50].

 

 

Пример:

1

5

3

3 4 5

6

3

23

6

7

45

 

 

 

 

 

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

[взаимное расположение фигур]: 1 – треугольник

 

 

внутри круга, 2 – треугольник вне кругов, 3 – другие ситуации.

 

 

Модификация:

 

 

 

 

 

 

 

 

 

 

 

 

 

[0.7]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0.7]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[0.9]

 

 

 

 

 

 

 

 

 

 

 

 

 

7

Лабораторная работа №2 "Альтернативные действия"

Задача

Ф

И

 

 

О

7Формулировка. Пройдет ли кирпич со сторонами a, b и c сквозь прямоугольное отверстие со сторонами r и s? Стороны отверстия должны быть параллельны граням кирпича. Кирпич не проходит при одинаковых

размерах кирпича и отверстия.

Формат входных данных: [a] [b] [c] [r] [s]. Размеры задаются целыми числами в диапазоне [1,100]. Пример: 1 2 3 3 2 Формат выходных данных: [проходит/не проходит]: 0 – не проходит, 1 - проходит. Пример: 1

Модификация:

[0.6]

[0.9]

[1.2]

Формулировка. Может ли шар радиуса r пройти через ромбообразное8

отверстие с диагоналями p и q? Для прохождения шара зазор между шаром и

ромбом не требуется.

Формат входных данных: [r] [p] [q]. Размеры задаются вещественными

числами в диапазоне (0,100]. Пример: 21.3 33.5 34.7 Формат выходных данных: [проходит/не проходит]: 0 – не проходит, 1 -

проходит. Пример: 1

Модификация:

[0.7]

[0.9]

[1.1]

9Формулировка. Можно ли коробку размером a×b×c упаковать в посылку

размером r×s×t? «Углом» коробку укладывать нельзя. Коробка

упаковывается при одинаковых размерах коробки и посылки.

Формат входных данных: [a] [b] [c] [r] [s] [t]. Размеры задаются целыми числами в диапазоне [1,100]. Пример: 1 2 3 3 2 1 Формат выходных данных: [упаковывается/не упаковывается]: 0 – не упаковывается, 1 - упаковывается. Пример: 1

Модификация:

[0.6]

[0.8]

[1.2]

Формулировка. Можно ли из круглой заготовки радиуса r вырезать две10

прямоугольные пластинки

с размерами a×b и с×d?

 

 

Формат

входных данных:

[a] [b] [c] [d] [r]. Размеры задаются

вещественными числами в

диапазоне (0,100]. Пример:

1

2 3 3 4

Формат

выходных данных:

[можно/нельзя вырезать]: 0

нельзя, 1 – можно.

Пример: 0

 

 

 

Модификация:

[0.6]

[0.7]

[1.1]

8

Лабораторная работа №2 "Альтернативные действия"

 

 

Задача

 

Ф

 

 

 

И

 

 

 

 

 

О

 

 

 

 

11

Формулировка. Можно ли

на прямоугольном участке застройки размером a и

 

 

b метров разместить два дома с размерами p на q и r на s метров? Дома

 

 

можно располагать только параллельно сторонам участка.

 

 

 

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

[a] [b] [p] [q] [r] [s]. Размеры задаются целыми

 

 

числами в диапазоне [1,100]. Пример: 1 2 3 3 2 1

 

 

 

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

[можно/нельзя разместить]: 0 – нельзя, 1 -

 

 

можно. Пример: 0

 

 

 

 

 

Модификация:

 

 

 

 

 

[0.8]

 

 

 

 

 

[1.1]

 

 

 

 

 

[1.2]

 

 

 

 

12

Формулировка. Определите расстояние между окружностями (x - a1)2 + (y –

 

 

b1)2 = r12 и (x – a2)2 + (y – b2)2 = r22.

 

 

 

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

[a1] [b1] [r1] [a2] [b2] [r2]. Координаты

 

 

задаются целыми числами в диапазоне ±1000. Радиус окружности задается

 

 

целым числом в диапазоне [1,100]. Пример: 1 2 30 3 2 1

 

 

 

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

[расстояние между окружностями]. Расстояние

 

 

представляется целым числом. Если окружности пересекаются, то

 

 

 

расстояние считается нулевым. Пример: 5

 

 

 

Модификация:

 

 

 

 

 

[0.8]

 

 

 

 

 

[1.1]

 

 

 

 

 

[1.1]

 

 

 

 

13

Формулировка. Заданы координаты вершин треугольника ABC на плоскости.

 

 

Вывести их в порядке обхода по часовой стрелке (для проверки достаточно

 

 

рассмотреть знаки внутренних углов). Обход начинать с вершины A.

 

 

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

[x_a] [y_a] [x_b] [y_b] [x_c] [y_c]. Координаты

 

 

задаются целыми числами в диапазоне ±1000. Пример: 1 2 30 3 2 1

 

 

 

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

[название первой вершины] [пробел] [название

 

 

второй вершины] [пробел] [название третьей вершины]. Пример: A C B

 

 

Модификация:

 

 

 

 

 

[0.8]

 

 

 

 

 

[1.0]

 

 

 

 

 

[1.1]

 

 

 

 

14

Формулировка. Путник двигался t1 часов со скоростью v1 км/ч,

затем t2

 

 

часов – со скоростью v2 км/ч и t3 часов – со скоростью v3

км/ч. За

 

 

какое время он одолел первую половину пути? Если путник не двигался, то

 

 

рассматривать эту ситуацию как неверный ввод данных.

 

 

 

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

[t1] [v1] [t2] [v2] [t3] [v3]. Скорость задается

 

 

вещественными числами в диапазоне [0,7] км/ч. Время задается в формате

 

 

часы:минуты (часы задаются целым числом в диапазоне [0,4]). Пример:

 

 

1:30 2.0 3:0 3.7

2:0 1.0

2:35

 

 

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

[время в формате часы:минуты]. Пример:

 

 

Модификация:

 

 

 

 

 

[1.0]

 

 

 

 

 

[1.0]

 

 

 

 

 

[1.2]

 

 

 

 

9

Лабораторная работа №2 "Альтернативные действия"

 

 

 

Задача

 

Ф

 

 

 

 

И

 

 

 

 

 

 

О

 

 

 

 

 

 

15

Формулировка. Можно ехать на такси со скоростью v1 км/ч и оплатой p1

 

 

руб/км либо идти со скоростью v2 км/ч бесплатно. Как с наименьшими

 

 

затратами преодолеть путь s за время t, если это возможно? Каковы эти

 

 

затраты?

 

 

 

Формат входных данных: [v1] [p1] [v2] [s] [t]. Скорость задается

 

 

вещественными числами в диапазоне [0,250] км/ч. Оплата задается целыми

 

 

числами в диапазоне [1,100] руб/км. Расстояние задается вещественными

 

 

числами в диапазоне [0,150] км. Время задается в формате часы:минуты

 

 

(часы задаются целым числом в диапазоне [0,4]). Пример:

120.5 50 5.7

 

 

6.6 1:0

 

 

 

 

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

[время движения пешком] [пробел]

[стоимость в

 

 

руб.]. Время задается в

формате часы:минуты (часы задаются целым числом

 

 

в диапазоне [0,4]). Стоимость указывается вещественным числом с

 

 

точностью до двух знаков. Пример: 0:10 2.35

 

 

 

Если решения нет, то выдается сообщение «no solution». Пример: no

 

 

solution

 

 

 

Модификация:

 

 

 

[0.8]

 

 

 

 

[0.8]

 

 

 

 

[1.0]

 

 

 

16

Формулировка. На шахматной доске стоят черный король и

три белые ладьи

 

 

(ладья бьет по горизонтали и вертикали). Проверить, не находится ли

 

 

король под боем, а если есть угроза, то от кого именно. Позиция каждой

 

 

шахматной фигуры задается в обычной нотации, например, d7.

 

 

Формат входных данных: [вертикальная позиция короля] [горизонтальная

 

 

позиция короля] [вертикальная позиция первой ладьи] [горизонтальная

 

 

позиция первой ладьи] [вертикальная позиция второй ладьи]

 

 

[горизонтальная позиция второй ладьи] [вертикальная позиция третьей

 

 

ладьи] [горизонтальная позиция третьей ладьи]. Пример:

a1b2c3d4

 

 

Формат выходных данных: [вертикальная позиция той фигуры, которая бьет

 

 

короля] [горизонтальная позиция той фигуры, которая бьет короля]

 

 

[пробел] [вертикальная позиция той фигуры, которая бьет короля]

 

 

[горизонтальная позиция той фигуры, которая бьет короля] и т.д. Фигуры

 

 

выводятся в порядке их ввода. Если король не бьется ни одной фигурой,

 

 

то выдается no solution. Пример: с3 d4

 

 

 

Модификация:

 

 

 

 

[0.7]

 

 

 

 

 

 

[0.6]

 

 

 

 

 

 

[1.0]

 

 

 

 

 

 

[1.1]

 

 

 

 

10