Форум программистов, компьютерный форум, киберфорум
Maks
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Расчёт периметра прямоугольника по координатам вершин

Запись от Maks размещена 18.07.2026 в 10:14
Показов 708 Комментарии 0

Решение задачи по прикладной информатике средствами 1С.

Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.

Решение:
Создан документ со следующими реквизитами:
• АХ (синоним «Координата X вершины A», тип Число, длина 10, точность 2);
• АY (синоним «Координата Y вершины A», тип Число, длина 10, точность 2);
• ВХ (синоним «Координата X вершины B», тип Число, длина 10, точность 2);
• ВY (синоним «Координата Y вершины B», тип Число, длина 10, точность 2);
• СХ (синоним «Координата X вершины C», тип Число, длина 10, точность 2);
• СY (синоним «Координата Y вершины C», тип Число, длина 10, точность 2);
• DX (синоним «Координата X вершины D», тип Число, длина 10, точность 2);
• DY (синоним «Координата Y вершины D», тип Число, длина 10, точность 2);
• Периметр (тип Число, длина 10, точность 0).
В модуле формы создана команда формы «РассчитатьПериметр», которой задан следующий алгоритм:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
&НаКлиенте
Процедура РассчитатьПериметр(Команда) // Вычислить 
    // Сбрасываем значения при повторном вызове процедуры
    Объект.Периметр = 0;
    ОчиститьСообщения();   
    // Устанавливаем переменные для читабельности кода
    АХ = Объект.АХ;           // Координата X вершины A
    АY = Объект.АY;             // Координата Y вершины A
    ВХ = Объект.ВХ;           // Координата X вершины B
    ВY = Объект.ВY;             // Координата Y вершины B
    СХ = Объект.СХ;           // Координата X вершины C
    СY = Объект.СY;             // Координата Y вершины C
    DX = Объект.DX;           // Координата X вершины D
    DY = Объект.DY;           // Координата Y вершины D
    Периметр = Объект.Периметр;      // Результат расчёта 
    // Проверка заполнения координат
    Если АХ = Неопределено Или АY = Неопределено
        Или ВХ = Неопределено Или ВY = Неопределено
        Или СХ = Неопределено Или СY = Неопределено
        Или DX = Неопределено Или DY = Неопределено Тогда
        Сообщить("Необходимо заполнить координаты всех вершин (A, B, C, D)!");
        Возврат;
    КонецЕсли;
    // Вычисляем длины всех сторон по формуле расстояния между точками
    СторонаAB = Sqrt((ВХ - АХ) * (ВХ - АХ) + (ВY - АY) * (ВY - АY));
    СторонаBC = Sqrt((СХ - ВХ) * (СХ - ВХ) + (СY - ВY) * (СY - ВY));
    СторонаCD = Sqrt((DX - СХ) * (DX - СХ) + (DY - СY) * (DY - СY));
    СторонаDA = Sqrt((АХ - DX) * (АХ - DX) + (АY - DY) * (АY - DY));
    // Проверяем, что это прямоугольник: противоположные стороны равны
    Если Окр(СторонаAB, 6) <> Окр(СторонаCD, 6)
        Или Окр(СторонаBC, 6) <> Окр(СторонаDA, 6) Тогда 
        Сообщить("Ошибка: фигура не является прямоугольником (противоположные стороны не равны)");
        Возврат;
    КонецЕсли;
    // Дополнительно проверяем перпендикулярность
    ВекторAB_X = ВХ - АХ;
    ВекторAB_Y = ВY - АY;
    ВекторAD_X = DX - АХ;
    ВекторAD_Y = DY - АY;
    СкалярноеПроизведение = ВекторAB_X * ВекторAD_X + ВекторAB_Y * ВекторAD_Y;
    Если Окр(СкалярноеПроизведение, 6) <> 0 Тогда
        Сообщить("Ошибка: фигура не является прямоугольником (углы не прямые)");
        Возврат;
    КонецЕсли;
    // Расчёт периметра
    Периметр = СторонаAB + СторонаBC + СторонаCD + СторонаDA;
    Объект.Периметр = Периметр;
КонецПроцедуры
Результат:

Вариант 1: Прямоугольник со сторонами, параллельными осям координат (самый простой).
• AX = 0, AY = 0;
• BX = 4, BY = 0;
• CX = 4, CY = 3;
• DX = 0, DY = 3.
Периметр: P = 4+3+4+3 = 14 единиц.

Нажмите на изображение для увеличения
Название: 009.jpg
Просмотров: 39
Размер:	58.6 Кб
ID:	11936

Вариант 2: Квадрат (частный случай прямоугольника).
• AX = 2, AY = 2;
• BX = 5, BY = 2;
• CX = 5, CY = 5;
• DX = 2, DY = 5.
Периметр: P=3+3+3+3 = 12 единиц.

Нажмите на изображение для увеличения
Название: 010.jpg
Просмотров: 25
Размер:	58.7 Кб
ID:	11937

Вариант 3: Некорректные данные (для проверки обработки ошибок).
Пример набора точек, не образующих прямоугольник:
• AX = 0, AY = 0;
• BX = 3, BY = 0;
• CX = 4, CY = 2;
• DX = 1, DY = 2.
В данном случае программа выведет сообщение об ошибке: «Фигура не является прямоугольником».

Нажмите на изображение для увеличения
Название: 011.jpg
Просмотров: 23
Размер:	74.8 Кб
ID:	11938
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru