Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Текст программы. { Программа Лабораторной работы N 9
Program Lab_9; { Программа Лабораторной работы N 9 Динамические переменные. Списки. Вариант N 31. А.Я.Умненькая, ст. гр. Я-007} TYPE data = record {описатель структуры данных студента} Name: string[15]; { поле для Фамилии И.О.} Bal1, Bal2: integer; {поля баллов за 2 семестра} SrBal: real; {поле для среднего балла } end; Pd=^Dek; {описатель указателей на вершины дека} Dek= record { описатель звена дека} P1: Pd; {поле указателя следующего звена от начала} P2: Pd; {поле указателя следующего звена от конца } Student: data; { поле данных студента} end; VAR Docum: data; {рабочая структура данных о студенте } DN, DK: Pd; { указатели на начало и конец дека } Fin, Fout: text; {Файлы входных данных и результатов работы} k: integer; { количество элементов дека} Procedure GetStud(Var F: text; var St: data); {процедура чтения одной записи файла и формирования данных студента} Var P, i: integer; Begin i: =0; P: =0; St.Name: ='---------------'; поле фамилии заполняем строкой из прочерков максимальной длины while P< 2 do {пока не прочтем второй пробел } begin inc(i); read(F, St.Name[i]); {читаем из файла по символу в поле имени } if St.Name[i]=' ' then P: =P+1; { подсчет пробелов} end; St.Name: =Copy(St.Name, 1, i); { Из полной строки поля фамилии вырезаем подстроку по второй пробел (включительно) и заносим обратно в поле фамилии } readln(F, St.Bal1, St.Bal2, St.SrBal); { остаток записи файла читаем в поля оценок } End; Procedure PutDek(Var NK, KN: Pd; Inf: data; Beg: boolean); {процедура добавления элемента в дек с заказанного конца} Var U: Pd; Begin New(U); U^.Student: =Inf; U^.P1: =nil; U^.P2: =nil; if NK=nil then { если дек перед этим был пуст } KN: =U else if Beg then { если добавляем в начало } begin U^.P1: =NK; NK^.P2: =U; end else { если добавляем в конец } begin U^.P2: =NK; NK^.P1: =U; end; NK: =U; End; Procedure DelDek(Var NK, KN: Pd; var Inf: data; Beg: boolean); {процедура выбора элемента из заказанного конца дека } Var U: Pd; Begin U: =NK; Inf: =U^.Student; if NK=KN then { если в деке был всего один элемент} begin { делаем дек пустым} KN: =nil; NK: =nil; end else if Beg then { если удаление из начала } begin NK: =U^.P1; NK^.P2: =nil; end else { если удаление из конца } begin NK: =U^.P2; NK^.P1: =nil; end; Dispose(U); { собственно освобождение памяти от элемента } End; Procedure ReadFile(Var F: text; Var DekN, DekK: Pd; var N: integer); { чтение файла с заполнением дека } Var Stud: data; Begin N: =0; While Not Eof(F) do begin GetStud(F, Stud); N: =N+1; if (Stud.Bal1=5) and (Stud.Bal2=5) then PutDek(DekN, DekK, Stud, TRUE) else if (Stud.Bal1=3) and (Stud.Bal2=3) then PutDek(DekK, DekN, Stud, FALSE) else { если данные не заносим в дек } N: =N-1; end; End; Procedure WriteFile(Var F: text; Var NK, KN: Pd; N: integer); { процедура распечатки дека в выводной файл с удалением дека} Var i: integer; Stud: data; Begin Writeln(F, '|--------------------------------------', '--------------|'); Writeln(F, '| N | Фамилия И.О. | 1-й балл | 2-й ', 'балл | Ср.балл |'); For i: =1 to N do begin Writeln(F, '|---|----------------|----------|----', '------|---------|'); DelDek(NK, KN, Stud, TRUE); WriteLn(F, '|', i: 2, ' | ', Stud.Name: 15, '|', Stud.Bal1: 6, ' |', Stud.Bal2: 6, ' |', Stud.SrBal: 6: 1, ' |'); end; Writeln(F, '|--------------------------------------', '--------------|'); End; BEGIN { ОСНОВНАЯ ПРОГРАММА } Assign(Fin, 'Dan.txt'); Reset(Fin); Assign(Fout, 'Umnik9.res'); ReWrite(Fout); DN: =nil; DK: =nil; k: =0; ReadFile(Fin, DN, DK, k); Close(Fin); With Docum do begin Bal1: =k; Bal2: =0; SrBal: =0.0; Name: ='Список типа S0D'; end; PutDek(DN, DK, Docum, TRUE); { добавление в начало дека записи со сводной информацией. } DelDek(DN, DK, Docum, TRUE); {Выбор из дека сводной информации для печати } Writeln(Fout, Docum.Name: 20, ' из ', Docum.Bal1, ' строк'); WriteFile(Fout, DN, DK, k); {печать дека в файл с удалением элементов дека} close(Fout); End. Варианты заданий Таблица 33. Варианты заданий лабораторной работы № 9
Литература
|