Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Then begin
Writeln('Список пуст'); Halt; end else begin // список не пуст – удаление: DisItem: =List; // устанавливаем DistItem на начало списка, List: =List^.Next; // устанавливаем List на второй элемент списка, DeleteFirst: =DisItem^.Value; // возвращаем значение удаляемого элемента Dispose(DisItem); // и удаляем первый элемент списка end; end; Исключение последнего элемента списка List: function DeleteLast(var List: pItem): tValue; // Исключение последнего элемента списка List и возвращение его значения var DisItem, // указатель на удаляемый (последний) элемент списка PredItem: pItem; // указатель на элемент, предшествующий удаляемому Begin if List= nil // если список пуст, то удаление невозможно Then begin Writeln('Список пуст'); Halt; End else begin // список не пуст – удаление: // Поиск последнего (удаляемого) и предпоследнего элементов списка DisItem: =List; PredItem: = nil; while DisItem^.Next< > nil do begin // пока не достигнут конец списка: PredItem: =DisItem; // сдвиг PredItem на следующий за ним элемент DisItem: =DisItem^.Next; // и сдвиг DisItem на следующий за ним элемент end; if PredItem= nil // если в списке один элемент, then List: = nil // то после его удаления список станет пустым // иначе предпоследний элемент становится последним else PredItem^.Next: = nil; DeleteLast: =DisItem^.Value; // возвращаем значение удаляемого элемента Dispose(DisItem); // удаляем последний элемент списка end; end; Вывод в файл f элементов списка List: procedure WriteList(var f: Text; List: pItem); // Вывод в файл f элементов списка List var Item: pItem; // указатель на элемент списка Begin Item: =List; // устанавливаем Item на начало списка while Item< > nil do begin // пока не достигнут конец списка: Write(f, Item^.Value: 8: 2); // выводим значение элемента Item: =Item^.Next; // и сдвигаем указатель Item на следующий элемент end; Writeln(f); end; Удаление всех элементов списка List: procedure Clear(var List: pItem); // Удаление элементов списка var Item: pItem; // указатель на удаляемый элемент списка Begin while List< > nil do begin // пока список не пуст: Item: =List; // устанавливаем Item на начало списка, List: =List^.Next; // передвигаем начало списка на следующий элемен т Dispose(Item); // и удаляем первый элемент end; // while end; Вычисление размера списка List: function Size(List: pItem): Word; // Возвращение количества элементов списка var Item: pItem; // указатель на элемент списка Begin Item: =List; // устанавливаем Item на начало списка Result: =0; // обнуляем счетчик числа элементов while Item< > nil do begin // пока не достигнут конец списка: Item: =Item^.Next; Inc(Result); // сдвигаем Item и увеличиваем счетчик end; // while end; Контрольные вопросы 1. Какие переменные программы называются статическими, где они размещаются и на каком этапе под них выделяется память? 2. Какие переменные называются динамическими, где они размещаются и на каком этапе под них выделяется память? 3. Что представляет собой значение указателя? 4. Адреса каких объектов могут хранить типизированные указатели и как они описываются? 5. Адреса каких объектов могут хранить нетипизированные указатели и как они описываются? 6. Каковы характеристики операции получения адреса? 7. Какие функции используются для работы с адресами? 8. Какие процедуры используются для работы с указателями? 9. Каким образом можно присвоить значение переменной-указателю? 10. Что такое ссылка на переменную? 11. Какие структуры данных называют динамическими? 12. Что такое список и как он реализуется с помощью динамических переменных? Как можно описать список в программе? 13. Какие операции определены для работы со списком? Лабораторная работа 1.
|