Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_прогр_одномер.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

2. Ввод массива поэлементно в Edit с нажатием кнопки Button

ЗАДАНИЕ: Дан одномерный массив А, размерностью 10. Найти максимальный и минимальный элементы массива Сформировать новый массив, в котором максимальный и минимальный элементы массива А поменять местами. Ввод массива – Edit1 и Button1. Вывод результата в ListBox

В ид исходной формы

Список компонентов и их свойства

Form1

Left = 192 Top = 114 Width = 366 Height = 506 Caption = 'Form1' Color = clBtnFace

OnCreate = FormCreate

Label1

Left = 40 Top = 16 Width = 268 Height = 13

Caption = Введите 10 элементов массива по одному элементу

Label2

Left = 40 Top = 104 Width = 218 Height = 13

Caption = Нажмите для поиска MAX и MIN и обмена

Label3

Left = 136 Top = 440 Width = 109 Height = 13

Caption =Закрыть приложение

Edit1

Left = 40 Top = 48 Width = 121 Height = 21 Text = ' '

Button1

Left = 192 Top = 48 Width = 75 Height = 25

Caption = Ввод OnClick = Button1Click

Button2

Left = 120 Top = 128 Width = 75 Height = 25

Caption = Решение OnClick = Button2Click

ListBox1

Left = 8 Top = 216 Width = 137 Height = 201 ItemHeight = 13

ListBox2

Left = 184 Top = 216 Width = 121 Height = 201 ItemHeight = 13

BitBtn1

Left = 256 Top = 432 Width = 75 Height = 25 Kind = bkClose

StaticText1

Left = 32 Top = 184 Width = 96 Height = 17 BevelOuter = bvSpace

BorderStyle = sbsSunken Caption =Исходный массив

Color = clSkyBlue ParentColor = False

StaticText2

Left = 184 Top = 184 Width = 103 Height = 17

Caption =Результат решения Color = clSkyBlue ParentColor = False

Текст программного модуля

unit Unit1;

Interface

uses

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

Dialogs, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Edit1: TEdit; Button1: TButton; Button2: TButton;

ListBox1: TListBox; ListBox2: TListBox; BitBtn1: TBitBtn;

Label1: TLabel; Label2: TLabel; StaticText1: TStaticText;

StaticText2: TStaticText; Label3: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

private

Глобальные переменные:

A[I] - одномерный массив целых чисел, содержит 10 элементов

I - параметр цикла I= 1..10

Min, max – минимальный и максимальный элементы массива А

Imin, imax – координаты минимального и максимального элементов массива А

Локальные переменные (procedure tForm1.Button2Click)

K – параметр цикла (перебирает элементы массива)

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

a: array [1..10] of integer;

i, min, max, imax, imin : integer;

Implementation

{$R *.dfm}

// Процедура очистки поля компонентов ListBox1, ListBox2

// и обнуления параметра цикла I во время создания исходной формы

procedure TForm1.FormCreate(Sender: TObject);

begin

i:=0;

listbox1.Clear;

listbox2.Clear;

end;

// Процедура ввода 10 элементов массива А и вывода массива в компонент ListBox1

..// Вариант 1

procedure TForm1.Button1Click(Sender: TObject);

begin

listbox1.Items.Add(edit1.text);

i:=i+1;

if i=10 then listbox1.Items.Add('ввод массива завершен');

a[i]:=strtoint(edit1.Text);

edit1.setfocus

end;

{..// Вариант 2

procedure TForm1.Button1Click(Sender: TObject);

begin

listbox1.Items.Add(edit1.text);

i:=i+1; a[i]:=strtoint(edit1.Text);

if i=10 then begin

listbox1.Items.Add('ввод массива завершен');

edit1.Text:= 'ввод завершен' ;

button1.Hide;

end;

edit1.setfocus

end;}

// Процедура поиска MIN, MAX и вывода массива после обмена в компонент ListBox2

procedure TForm1.Button2Click(Sender: TObject);

var k: integer;

begin

max:=a[1]; imax:=1;

min:=a[1]; imin:=1 ;

for k:=2 to 10 do

begin

if max < a[k] then begin

max:=a[k];

imax:=k;

end;

if min > a[k] then begin

min:=a[k];

imin:=k;

end;

end;

a[imax]:=min;

a[imin]:=max;

listbox2.Items.Add('максимум = '+ inttostr(max));

listbox2.Items.Add('минимум = '+ inttostr(min));

listbox2.Items.Add('массив после обмена ');

for k:=1 to 10 do listbox2.Items.Add(inttostr(a[k]));

end;

// Процедура установки фокуса в поле редактора ввода Edit1

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if ((key) = (13)) then button1.SetFocus

end;

end. // конец модуля

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]