Студопедия

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

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

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






Пример выполнения задания. Описать и реализовать в модуле 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 :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.