Введение
Изначально была поставлена задача написать решение пяти задач по программированию языком 1С.
Было решено писать на управляемых формах для ускорения создания элементов на форме.
Задачи:
- Задана точка с координатами (x,y) и треугольник с координатами вершин (x1,y1),(x2,y2),(x3,y3).Определить, лежит ли точка внутри или вне треугольника.
- Дан одномерный числовой массив. Перестроить массив таким образом, чтобы вначале следовали отрицательные элементы, затем нули и после располагались положительные элементы массива. Порядок следования среди положительных и отрицательных элементов должен быть сохранен прежним.
- Число называется совершенным, если оно равно сумме всех своих делителей, меньших его самого. Определить, является ли введенное с клавиатуры число совершенным
- Для заданных, а, b, с вычислить z = max (min (a, b), с). Не прибегая к функциям min и max.
- Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. Входные данные: последовательности нулей и единиц. Выходные данные: число (длина цепочки)
Решения
Решение задачи 1:
Считаются произведения (1, 2, 3 - вершины треугольника, 0 - точка):
(x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)
(x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0)
(x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0)
Если они одинакового знака, то точка внутри треугольника, если что-то из этого - ноль, то точка лежит на стороне, иначе точка вне треугольника.
Решение задачи 2:
Запись данных из формы в тип 1С "массив" и затем сортировка массива пузырьком.
Решение задачи 3:
Совершенные числа считаются, когда сумма всех своих делителей, меньших его самого:
- 1-е совершенное число — 6 имеет следующие собственные делители: 1, 2, 3; их сумма равна 6.
- 2-е совершенное число — 28 имеет следующие собственные делители: 1, 2, 4, 7, 14; их сумма равна 28.
- 3-е совершенное число — 496 имеет следующие собственные делители: 1, 2, 4, 8, 16, 31, 62, 124, 248; их сумма равна 496.
- 4-е совершенное число — 8128 имеет следующие собственные делители: 1, 2, 4, 8, 16, 32, 64, 127, 254, 508, 1016, 2032, 4064; их сумма равна 8128.
Реализация идет через цикл счетчика "делитель", пока делитель числа меньше или равен его половины. Когда делитель делится на число без остатка, то его можно суммировать. Если результат суммы равен вводимому числу после завершения цикла, то число совершенное.
Решение задачи 4:
Результат получаем без использования функции "Макс" и "Мин", используя только сравнение.
Решение задачи 5:
Посимвольный обход строки в цикле. При нахождении символа "0" используем счетчик и записываем в буфер, если он меньше счетчика. Как только символ не равен "0" сбрасываем счетчик.
Все задачи реализованы в виде одной обработки!
P.S. Если материал вам помог, поблагодарите автора, поставив звездочку!