Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Пример выполнения задания. Описать и реализовать в модуле LineStrs (линейные структуры) класс – стек






    Описать и реализовать в модуле LineStrs (линейные структуры) класс – стек. Сформировать стек из вещественных элементов, записанных в файле LW3Dat.txt. Исключить из стека элементы с введенным с терминала значением. Результаты работы записать в файл LW3Res.txt.

    Программа решения задачи:

    // Лабораторная работа 1. Стеки, очереди, деки.

    // Выполнил Сергеев Андрей, группа 500.

    // Формирование стека и исключение заданных элементов.

    // Исходные данные - элементы стека - в файле LW1Dat.txt

    // Результаты работы помещаются в файл LW1Res.txt

    program LW1;

    Uses

    SysUtils,

    Stacks in 'Stacks.pas';

    function WinDOS(const s: string): string;

    // Перекодировка русских символов строки s из ANSI (Windows) в ASCII (DOS)

    Var

    i: Word;

    Begin

    Result: =s; // копирование исходной Windows-строки в строку-результат

    for i: =1 to Length(s) do begin

    case Result[i] of

    'А'..'п': Dec(Result[i], 64); // уменьшение кода ANSI на 64

    'р'..'я': Dec(Result[i], 16); // уменьшение кода ANSI на 16

    'Ё': Inc(Result[i], 72); // увеличение кода ANSI на 72

    'ё': Inc(Result[i], 57); // увеличение кода ANSI на 57

    end; // case

    end; // for

    end; // WinDOS

    Var

    Stack1, Stack2: tStack; // основной и вспомогательный стеки

    fDat, fRes: Text; // файлы исходных данных и результатов

    StVal, DelVal: tValue; // значения текущего и исключаемого элемента

    quan: Word; // количество элементов стека

    Begin

    Try

    Assign(fDat, 'LW1Dat.txt'); Reset(fDat);

    Assign(fRes, ' LW1Res.txt'); Rewrite(fRes);

    // Вывод заголовков в файл результатов

    WriteLn(fRes, 'Работа со стеком - поиск и удаление заданного элемента');

    // Создание экземпляров Stack1, Stack2 класса tStack

    Stack1: = tStack.Create; Stack2: = tStack.Create;

    // Формирование стека 1

    While not eof(fDat) do begin

    Read(fDat, StVal); Stack1.Push(StVal);

    end;

    quan: = Stack1.Size;

    // Вывод элементов стека 1 в файл результатов с помощью итератора

    WriteLn(fRes, 'Сформирован стек из ', quan, ' элементов: ');

    Stack1.IterInit;

    while not Stack1.IterDone do Write(fRes, Stack1.IterNext: 5: 1);

    Write(WinDos('Значение исключаемого элемента? '));

    ReadLn(DelVal);

    WriteLn(fRes);

    WriteLn(fRes, 'Значение исключаемого элемента = ', DelVal: 5: 1);

    // Исключение элементов из стека 1 и включение не равных DelVal в стек 2

    While not Stack1.Empty do begin

    StVal: = Stack1.Pop;

    if StVal < > DelVal

    then Stack2.Push(StVal);

    end;

    // Перезапись оставшихся после удаления элементов из стека 2 в стек 1

    While not Stack2.Empty do begin

    StVal: = Stack2.Pop; Stack1.Push(StVal);

    end;

    // Вывод элементов стека 1 в файл результатов с помощью итератора

    WriteLn(fRes, 'Из стека исключено ', quan - Stack1.Size, ' элементов');

    WriteLn(fRes, 'В стеке осталось ', Stack1.Size, ' элементов: ');

    Stack1.IterInit;

    while not Stack1.IterDone do Write(fRes, Stack1.IterNext: 5: 1);

    WriteLn(fRes);

    Stack1.Free; Stack2.Free;






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.