Задачи по программированию на 1С

18.04.17

Разработка - Математика и алгоритмы

Сборник задач по программированию. Начало...

Скачать исходный код

Наименование Файл Версия Размер
Задачи по программированию
.epf 12,30Kb
7
.epf 1.0.1 12,30Kb 7 Скачать

Введение

Изначально была поставлена задача написать решение пяти задач по программированию языком 1С.

Было решено писать на управляемых формах для ускорения создания элементов на форме.

Задачи:

  1. Задана точка с координатами (x,y) и треугольник с координатами вершин (x1,y1),(x2,y2),(x3,y3).Определить, лежит ли точка внутри или вне треугольника.
  2. Дан одномерный числовой массив. Перестроить массив таким образом, чтобы вначале следовали отрицательные элементы, затем нули и после располагались положительные элементы массива. Порядок следования среди положительных и отрицательных элементов должен быть сохранен прежним.
  3. Число называется совершенным, если оно равно сумме всех своих делителей, меньших его самого. Определить, является ли введенное с клавиатуры число совершенным
  4. Для заданных, а, b, с вычислить z = max (min (a, b), с). Не прибегая к функциям min и max.
  5. Требуется найти самую длинную непрерывную цепочку нулей в последовательности нулей и единиц. Входные данные: последовательности нулей и единиц. Выходные данные: число (длина цепочки)

Решения

Решение задачи 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. Если материал вам помог, поблагодарите автора, поставив звездочку!

обработка УФ управляемая форма задача задачи по программиронию

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1886    stopa85    12    

34

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4690    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7690    4    SpaceOfMyHead    17    

56

Мини-обзор разных решений задач

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    3117    RustIG    6    

25

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7953    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4566    fishca    13    

37

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8957    John_d    73    

46
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DrAku1a 1715 19.04.17 07:58 Сейчас в теме
2. Создать два временных массива (один для отрицательных чисел, второй для положительных), затем пройтись по основному массиву цикл "Для каждого" - разложить числа в каждый из массивов, затем исходный массив очистить и заполнить сперва из первого массива, потом из второго.

3. Цикл можно уменьшить ещё вдвое, если обрабатывать ещё и результат деления (кроме 1) - т.е. 8128 / 2 = 4064 => берём числа 2 и 4064.

4. Если A<>B, то можно получить по формуле
max(a, b) = a * ((a-b) + |a-b|) / 2(a-b) + b * ((b-a) + |b-a|) / 2(b-a)
min(a, b) = b * ((a-b) + |a-b|) / 2(a-b) + a * ((b-a) + |b-a|) / 2(b-a)
+
4. comptr 31 19.04.17 09:31 Сейчас в теме
(1) 2. Ещё нужен массив под нули.
3. И перебирать тогда до корня из числа, а не до половины.
DrAku1a; +1
7. Xershi 1484 19.04.17 23:24 Сейчас в теме
(1) 2. Сортировку пузырьком сделать для массив отрицательных и положительных и затем добавить массив нулей чтобы сохранить порядок?
3. Заниматься излишней оптимизацией зачем?
4. Решение через чур громоздкое для простого условия. В математичку не лез и лишний код писать зачем?
+
8. DrAku1a 1715 20.04.17 02:25 Сейчас в теме
(7) 2. Не понял. По условию - нужно сохранить порядок следования отрицательных и положительных чисел, сохранив их порядок, так? Разве сортировка пузырьком - не изменит порядка? Или при сортировке - перемещаются только числа с разными знаками?
3. Оптимизация. Бывают ситуации, когда это нужно, бывают - когда это нецелесообразно. Но знать и уметь - нужно!
4. Данное решение - для математической задачи "Для двух разных чисел вычислить максимум и минимум не прибегая к функциям или сравнению".
+
2. TODD22 18 19.04.17 09:08 Сейчас в теме
Было решено писать на управляемых формах для ускорения обработки элементов форм.

не много не понял... как УФ ускоряет обработку элементов формы?
DrAku1a; DAnry; +2
5. Xershi 1484 19.04.17 19:49 Сейчас в теме
(2) тем что уф рисует элементы сама. Под обработкой речь идет о вводе элементов на форму.
+
9. TODD22 18 20.04.17 04:28 Сейчас в теме
(5)Тогда наверное надо было написать "для ускорения создания элементов на форме". А не "ускорения обработки элементов формы".
Xershi; +1
10. Xershi 1484 20.04.17 12:12 Сейчас в теме
(9) спасибо за комментарий, так и отредактирую!
+
3. comptr 31 19.04.17 09:20 Сейчас в теме

Порядок следования среди положительных и отрицательных элементов должен быть сохранен прежним.
...
Решение задачи 2:
Запись данных из формы в тип 1С "массив" и затем сортировка массива пузырьком.

Сортировка изменит порядок.
+
6. Xershi 1484 19.04.17 22:21 Сейчас в теме
(3) были сомнения по этому поводу. Но проверить позиции технически нельзя без написания велосипеда, оставил пока в таком виде как "есть".
+
11. scientes 288 03.11.22 11:36 Сейчас в теме
Задача 5
Функция ЗадачаМаксимальнаяДлинаЦепочки(вхСтрока) экспорт
	список=новый СписокЗначений;
	список.ЗагрузитьЗначения(СтрРазделить(вхСтрока,"1"));
	список.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
	
	возврат (СтрДлина(список.Получить(0)));
КонецФункции	
Показать
+
12. scientes 288 03.11.22 11:53 Сейчас в теме
3 задача

В 18 веке Эйлер показал , что любое четное совершенное число имеет вид 2^(n-1)*(2^n - 1). Таким образом, если число четное, то можно на первом шаге проверить это утверждение. Если оно не выполняется, то число несовершенное. Если выполняется, то надо искать сумму множителей числа. Есть ли нечетные совершенные числа пока неизвестно.
+
Оставьте свое сообщение