Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Задание. Создайте класс «Список» с полями: указатель на начало списка, размер списка и со следующими обязательными методами: конструктор Create – создание пустого
Создайте класс «Список» с полями: указатель на начало списка, размер списка и со следующими обязательными методами: конструктор Create – создание пустого списка; деструктор Destroy – уничтожение списка; Clear – удаление всех элементов списка; InsertFirst(v) – включение элемента со значением v в начало списка; WriteList(f) – вывод элементов списка в файл f. Поля закройте от прямого доступа с помощью свойств. Реализуйте в виде методов подпрограммы обработки списка, указанные в вашем варианте задания к лабораторной работе 1 «Указатели и динамические переменные». Описание и реализацию класса «Список» расположите в модуле. С использование разработанных методов составьте программу работы с экземплярами класса «Список» в соответствии с вашим вариантом задания. Пример выполнения задания Описать и реализовать класс «Список» целочисленных элементов. Реализовать метод записи отрицательных нечетных элементов списка в один список, положительных четных – в другой и продемонстрировать его работу. // Лабораторная работа 3. // Создание класса – списка. // Выполнил Сергеев Андрей, группа 999. // Модуль описания и реализации списка. Имя файла ListClass.pas. unit ListClass; Interface Type tValue=Integer; // тип содержательной части элемента списка – целый pItem=^tItem; // тип указателя на элемент списка tItem= record // тип элемента списка Value: tValue; // содержательная часть элемента списка Next: pItem; // указатель на следующий элемент списка end; // record tItem tList= class (tObject) // класс - «Список» Private fHead: pItem; // поле - указатель на начало списка fSize: Word; // поле – число элементов списка Public property Head: pItem read fHead write fHead; property Size: Word read fSize; constructor Create; // конструктор – создание пустого списка destructor Destroy; override; // деструктор – удаление списка procedure InsertFirst(v: tValue); // включение элемента со знач. v в начало списка procedure InsertLast(v: tValue); // включение элемента со знач. v в конец списка procedure WriteList(var f: Text); // вывод значений элементов списка в файл f procedure Clear; // удаление элементов из списка procedure FormLists(var L1, L2: tList); // формирование новых списков L1, L2 end; Implementation constructor tList.Create; // Создание пустого списка Begin inherited Create; fHead: = nil; fSize: =0; end; //constructor tList.Create destructor tList.Destroy; // Удаление списка Begin Clear; // удаление элементов из списка inherited Destroy; end; // destructor tList. Destroy procedure tList.InsertFirst(v: tValue); // Включение элемента со значением v в начало списка var NewItem: pItem; // указатель на новый элемент списка Begin New(NewItem); // выделение памяти под новый элемент списка NewItem^.Value: =v; // запись значения v в поле Value нового элемента NewItem^.Next: =fHead; // новый элемент ссылается на первый fHead: =NewItem; // новый элемент становится первым Inc(fSize); // увеличиваем число элементов списка на 1 end; //procedure tList.InsertFirst procedure tList.InsertLast(v: tValue); // Включение элемента со значением v в конец списка var NewItem, LastItem: pItem; // указатели на новый и последний элементы Begin New(NewItem); // выделение памяти под новый элемент списка NewItem^.Value: =v; // запись значения v в поле Value нового элемента NewItem^.Next: = nil; // новый элемент становится последним в списке if fHead= nil // если список пуст, then fHead: =NewItem // то новый элемент становится первым в списке else begin // список не пуст – поиск последнего элемента: LastItem: =fHead; // устанавливаем LastItem на начало списка, while LastItem^.Next< > nil do begin // пока не достигнут конец списка, LastItem: =LastItem^.Next; // сдвигаем LastItem на следующий элемент end; LastItem^.Next: =NewItem; // новый элемент следует за последним end; Inc(fSize); // увеличиваем число элементов списка на 1 end; // procedure tList.InsertLast procedure tList.WriteList(var f: Text); // Вывод элементов списка в файл f var Item: pItem; // указатель на элемент списка Begin Item: =fHead; // устанавливаем Item на начало списка while Item< > nil do begin // пока не достигнут конец списка: Write(f, Item^.Value: 5); Item: =Item^.Next; // вывод элемента и сдвиг Item end; Writeln(f); end; // procedure tList.WriteList procedure tList.Clear; // Удаление всех элементов из списка var Item: pItem; // указатель на удаляемый элемент списка Begin while fHead< > nil do begin // пока список не пуст: Item: =fHead; // устанавливаем Item на начало списка, fHead: =fHead^.Next; // передвигаем начало списка на следующий элемент Dispose(Item); // и удаляем элемент end; // while fSize: =0; // в списке нет элементов end; //procedure tList.Clear procedure tList.FormLists(var L1, L2: tList); // Формирование списков L1 и L2: // отрицательные нечетные – в L1, положительные четные – в L2 var Item: pItem; // указатель на текущий элемент списка Begin Item: =fHead; // устанавливаем Item на начало списка while Item< > nil do begin // пока не достигнут конец списка if (Item^.Value< 0) and odd(Item^.Value) then L1.InsertLast(Item^.Value); if (Item^.Value> 0) and not odd(Item^.Value) then L2.InsertLast(Item^.Value); Item: =Item^.Next; // сдвигаем Item на следующий элемент end; // while end; // procedure tList.FormLists end. // unit ListClass // Лабораторная работа 3. // Создание класса – списка. Выполнил Сергеев Андрей, группа 999. // Формирование двух списков из исходного списка. // Описание и реализация класса «Список» расположены в модуле ListClass.pas. // Исходные данные - элементы основного списка - в файле LW3Dat.txt. // Результаты работы помещаются в файл LW3Res.txt. program LW3; {$APPTYPE CONSOLE} uses ListClass; Var fDat, fRes: Text; // файловые переменные для файлов с исх. данными и результ. L, L1, L2: tList; // объекты - указатели на исходный и результирующие списки v: tValue; // значение элемента списка Begin Assign(fDat, 'LW3Dat.txt'); Reset(fDat); // открытие файла для чтения Assign(fRes, 'LW3Res.txt'); Rewrite(fRes); // открытие файла для записи // Создание экземпляров списков L: =tList.Create; L1: =tList.Create; L2: =tList.Create; while not Eof(fDat) do begin // пока не достигнут конец файла fDat Read(fDat, v); // чтение из файла очередного значения L.InsertFirst(v); // вставка элемента со значением v в начало списка L end; // while not Eof(fDat) do // Вывод в файл fRes элементов списка L и его размера: Writeln(fRes, 'Исходный список: '); L.WriteList(fRes); Writeln(fRes, 'Число элементов списка: ', L.Size); //Формирование и вывод в файл fRes списков L1 и L2 L.FormLists(L1, L2); Writeln(fRes, 'Список отрицательных нечетных элементов: '); L1.WriteList(fRes); Writeln(fRes, 'Число элементов списка: ', L1.Size); Writeln(fRes, 'Список положительных четных элементов: '); L2.WriteList(fRes); Writeln(fRes, 'Число элементов списка: ', L2.Size); L.Free; L1.Free; L2.Free; // удаление списков Close(fDat); Close(fRes); end.
Библиографический список 1. Ахо А.В., Хопкрофт Д.У., Ульман Д.Д. Структуры данных и алгоритмы. М.: Издательский дом «Вильямс», 2001. 2. Вирт Н. Алгоритмы и структуры данных. М.: Мир, 1989. 3. Данные в языках программирования: Абстракция и типология / Пер. с англ. М.: Мир, 1982. 4. Хомоненко А.Д. и др. Delphi 7. СПб.: БХВ-Петербург, 2003. 5. Фаронов В.В. Delphi 3. Учебный курс. М.: «Нолидж», 2001.
|