Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример выполнения задания. Описать и реализовать в модуле 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;
|