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

11 Раздаточный материал «Одномерные массивы» подготовлен Шаталовой л.М. Каф. 504

1. Ввод одномерного массива с использованием события Edit1KeyPress Исходная форма Форма с результатом

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

unit Unit1;

Interface

uses

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

Dialogs, StdCtrls, Buttons, Spin;

type

TForm1 = class(TForm)

SpinEdit1: TSpinEdit; Label1: TLabel; Label2: TLabel; Edit1: TEdit;

Memo1: TMemo; Label3: TLabel; BitBtn1: TBitBtn; Button1: TButton;

procedure FormActivate(Sender: TObject);

procedure SpinEdit1Change(Sender: TObject);

procedure Edit1KeyPress(Sender: TObject; var Key: Char);

procedure Button1Click(Sender: TObject);

procedure Edit1Change(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var

Form1: TForm1;

const M=10; // максимальное число элементов в массиве

var n: integer; // размерность массива

a: array [1..M] of integer; // массив целых чисел

i:integer; // текущий индекс массива

Implementation

{$R *.dfm}

//задаем начальное значение номера массива для ввода элементов, начиная с первого

procedure TForm1.FormActivate(Sender: TObject);

begin

i:=1;

end;

// ввод размерности и проверка введенного значения

procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

if spinedit1.text='' then exit;

if (spinedit1.value>=1) and (spinedit1.value<=10)

then n:= spinedit1.value else exit;

edit1.SetFocus;

end;

//ввод элементов и проверка ввода на цифры от 0 до 9 и знака минус

procedure TForm1.Edit1Change(Sender: TObject);

var i,q :integer;

begin

q:=length(edit1.Text) ; // длина введенной в edit1строки

for i:=1 to q do //проверка каждого введенного символа

if ((edit1.Text[i]<'0') or (edit1.Text[i]>'9')) and

(edit1.Text[i] <> '-') //цифры от 0 до 9 и знак минус

then begin

showmessage ('введите цифру, а не символ');

edit1.Text:='';

end

end;

//ввод элементов массива по одному с нажатием клавиши Enter

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if ((key=#13) and (edit1.Text<>'')and (i<=n)) then

begin

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

i:=i+1;

edit1.Text:='';

if i>n then begin

label2.Caption:='ввод завершен';

edit1.Hide;

end;

end;

end;

// вывод размерности массива и элементов массива (в строку)

procedure TForm1.Button1Click(Sender: TObject);

var j:integer;

begin

memo1.Text:=memo1.Text+ ' размерность массива равна ' + inttostr(n);

memo1.Lines.Add('') ;

for j:=1 to n do memo1.Text:=memo1.Text + ' ' + inttostr(a[j]);

end;

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

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

object Form1: TForm1

Left = 247 Top = 143 Width = 303 Height = 433 OnActivate = FormActivate

object Label1: TLabel

Left = 64 Top = 32 Width = 155 Height = 13

end

object Label2: TLabel

Left = 64 Top = 104 Width = 177 Height = 33

Alignment = taCenter AutoSize = False WordWrap = True

end

object Label3: TLabel

Left = 16 Top = 216 Width = 130 Height = 13

end

object SpinEdit1: TSpinEdit

Left = 88 Top = 64 Width = 121 Height = 22

MaxValue = 10 MinValue = 1 Value = 1 OnChange = SpinEdit1Change

end

object Edit1: TEdit

Left = 80 Top = 160 Width = 121 Height = 21

OnChange = Edit1Change OnKeyPress = Edit1KeyPress

end

object Memo1: TMemo

Left = 40 Top = 248 Width = 225 Height = 89 Lines.Strings = ('')

ScrollBars = ssVertical

end

object BitBtn1: TBitBtn

Left = 192 Top = 360 Width = 75 Height = 25 Kind = bkClose

end

object Button1: TButton

Left = 176 Top = 216 Width = 75 Height = 25 OnClick = Button1Click

end

end

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