Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! While Node<>nil do begin
Arc: =Node^.ArcList; If Arc< > nil then begin while (Arc^.NextArc< > nil) and (Arc< > ArcNode) do Arc: = Arc^.NextArc; if Arc=ArcNode then begin HeadNode: =Node; Break; end; end; Node: = Node^.NextNode; end; end; // function tOrGraph.HeadNode При реализации операции включения дуги между двумя заданными узлами графа дуга помещается в начало списка дуг узла, из которого она выходит (такое включение выполняется наиболее просто для линейного односвязного списка). При этом дуги в представлении графа хранятся в порядке, обратном их включению. Перед применением операции необходимо убедиться, что оба узла присутствуют в списке узлов графа. procedure tOrGraph.AddArc(Node1, Node2: pNode); // Включение дуги между узлами Node1 и Node2 Var Arc: pArc; Begin Arc: =ArcAddr(Node1, Node2); if Arc= nil Then begin Arc: =New(pArc); Arc^.NextArc: =Node1^.ArcList; Arc^.RearNode: =Node2; Node1^.ArcList: =Arc; Inc(fArcsNumber); end else Writeln('Узлы ', Node1^.Value, ' и ', Node2^.Value, ' уже соединены дугой'); end; // procedure tOrGraph.AddArc Исключение дуги между двумя заданными узлами, если она есть. Оба узла должны присутствовать в списке узлов графа. procedure tOrGraph.DeleteArc(Node1, Node2: pNode); // Исключение дуги между узлами Node1 и Node2, если она есть Var Arc, PrevArc: pArc; Begin Arc: =Node1^.ArcList; // адрес начала списка смежности узла Node1 If Arc< > nil then begin // если список дуг узла Node1 не пуст PrevArc: = nil; // адрес дуги, предшествующей исключаемой While (Arc^.RearNode< > Node2) and (Arc^.NextArc< > nil) do begin PrevArc: =Arc; Arc: = Arc^.NextArc; end; if Arc^.RearNode=Node2 // если есть дуга, входящая в узел Node2 then begin // удаление if PrevArc= nil then Node1^.ArcList: = Arc^.NextArc // удаляется первая дуга else PrevArc^.NextArc: = Arc^.NextArc; // удаляется не первая дуга Dispose(Arc); Dec(fArcsNumber); End else WriteLn('Исключаемая дуга отсутствует'); End else WriteLn('Исключаемая дуга отсутствует'); end; // procedure tOrGraph.DeleteArc При реализации операции включения узла в граф новый узел помещается в начало списка узлов графа, так как такое включение выполняется наиболее просто для линейного односвязного списка. Необходимо помнить, что при этом узлы в представлении графа хранятся в порядке, обратном их включению (как в стеке), поэтому операция обхода графа будет выводить узлы графа в том же обратном порядке. Узел включается в граф только в том случае, если он отсутствует в графе. procedure tOrGraph.AddNode(v: tValue); // Включение узла со значением v в граф Var NewNode: pNode; Begin if NodeAddr(v)= nil
|