Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП всі лабораторні.doc
Скачиваний:
2
Добавлен:
28.08.2019
Размер:
1.03 Mб
Скачать

9.2. Використання динамічних списків

Завдання 2: створити додаток для формування стека, який заповнюється шляхом введення цілих додатних чисел з клавіатури. Як тільки буде введено перше від’ємне число, вміст стека виводиться на панель інтерфейсу, а пам'ять займана його елементами звільняється.

Один з можливих варіантів панелі інтерфейсу створюваного додаток показаний на рис.9.2.

9.2.1. Розміщення компонентів на Формі

Розмістимо на Формі компоненти Label, Edit, Button і Memo.

Label

Memo

Edit

Button

Рис. 9.2

Збережемо модуль під ім'ям UnStek (текст модуля приведений в п.9.2.3).

9.2.2. Створення процедур обробки подій FormCreate і Button1Click

Подвійним натисненням клавіші “миші” на Формі і кнопці Button1 створіть відповідні процедури обробки подій. Використовуючи текст модуля UnStek, уважно наберіть операторів цих процедур.

9.2.3. Текст модуля UnStek

Unit UnStek;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs

StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Label2: TLabel;

Label3: TLabel;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

Type

PSt=^Zap;

Zap=record

inf:integer;

adr:PSt

end;

Var // оголошення глобальних змінних:

PVer, // покажчик вершини стека

PTek:PSt; // поточний покажчик

ElSt:integer; // елемент стека

procedure TForm1.Button1Click(Sender: TObject);

begin

New(PTek); // виділити пам'ять

ElSt:=StrToInt(Edit1.Text);// у ElSt занести значення з Edit1

PTek^.inf:=ElSt; // в інформаційну частину стека занести ElSt

PTek^.adr:=PVer; // в адресну частину занести покажчик на вершину

PVer:=PTek;// покажчик вершини повинен указувати на останній елемент

if ElSt>=0 then // якщо елемент стека ненегативний тоді...

begin

Edit1.Text:='';// очистити вікно редактора Edit1

Edit1.SetFocus;// передати фокус введення редакторові Edit1

end

else

begin

Memo1.Lines.Add('Елементи стека:'); // вивести заголовок

repeat

Memo1.Lines.Add(#9+IntToStr(PTek^.inf));// виведення елементів

PVer:=PTek^.adr;

Dispose(PTek); // звільнити пам'ять

PTek:=PVer

until PTek=nil;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

PVer:=nil; // ініціалізувати покажчик вершини

ElSt:=0; // ініціалізувати елемент стека

end;

end.

9.3. Виконання індивідуального завдання

За вказівкою викладача виберіть два варіанти індивідуальних завдань. У всіх завданнях необхідно передбачити контрольне виведення початкових даних.

  1. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з найбільшим і найменшим значеннями серед парних і виводить отриманий масив.

  2. Створити додаток, яке здійснює введення m рядків і n стовпців двовимірного масиву з клавіатури і виводить номер рядка і номер стовпця найменшого зі всіх значень його елементів.

  3. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить порядковий номер елемента з найменшим значенням серед непарних.

  4. Створити додаток, яке здійснює введення значень елементів двовимірного масиву n-го порядку з клавіатури і виводить значення найбільшого з елементів головної діагоналі.

  5. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, змінює порядок проходження елементів на протилежний і виводить отриманий масив.

  6. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить порядковий номер елемента з найбільшим значенням серед парних.

  7. Створити додаток, яке здійснює введення значень елементів двовимірного масиву n-го порядку з клавіатури і виводить значення суми елементів головної діагоналі.

  8. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з мінімальним і максимальним значеннями і виводить отриманий масив.

  9. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить порядковий номер елемента з найменшим значенням серед додатних.

  10. Створити додаток, яке здійснює введення значень елементів двовимірного масиву n-го порядку з клавіатури, змінює порядок проходження елементів головній діагоналі на протилежний і виводить перетворений масив.

  11. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з мінімальним і максимальним значеннями серед додатних і виводить отриманий масив.

  12. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить порядковий номер елемента з найбільшим значенням серед негативних.

  13. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з найбільшим значенням серед негативних і найменшим серед додатних і виводить отриманий масив.

  14. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури і виводить середнє арифметичне значення елементів масиву.

  15. Створити додаток, яке здійснює введення к значень елементів одновимірного масиву з клавіатури, міняє місцями елементи з найменшим значенням серед парних і найбільшим серед непарних і виводить отриманий масив.

  16. Створити додаток, яке заносить в стек цілі позитивні числа з клавіатури, виводить вміст стека і середнє арифметичне значення його елементів.

  17. Створити додаток, яке заносить в стек символи з клавіатури, виводить вміст стека і повідомлення про те, міститься чи ні в стеку заданий символ.

  18. Створити додаток, яке заносить в кожен елемент стека англійське слово з клавіатури і, як тільки буде введено слово “end”, виводить вміст стека.

  19. Створити додаток, яке заносить в стек довільні цілі числа з клавіатури, виводить вміст стека і повідомлення про те, міститься чи ні в стеку задане число.

  20. Створити додаток, яке заносить в стек символи з клавіатури, виводить вміст стека і повідомлення про те, чи впорядковані елементи стека за абеткою чи ні.

  21. Створити додаток, яке заносить в стек позитивні цілі числа з клавіатури і, як тільки буде введено число, рівне сумі введених чисел, виводить вміст стека.