Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
яву_кисо_delphi(1)(1).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.26 Mб
Скачать

Лабораторная работа №8 Обработка матриц

1.Цель лабораторной работы

Целью лабораторной работы является приобретение практических навыков программирования циклических вычислительных процессов обработки матриц.

2.Условия: даны две матрицы А и В. Получить новую матрицу С прибавлением к элементам каждого столбца первой матрицы минимального элемента соответствующего столбца второй матрицы.

3.Используемые компоненты и их свойства

Имя ком- понента

Настраиваемые свойства

Значения

Комментарии

1

2

3

4

5

1

Form1

(форма)

BorderStyle

Caption

Menu

PopUpMenu

{bi System Menu}

{biMinimize}

Matrix

MainMenu1

PopupMenu1

системное меню

кнопка минимизации

заголовок формы

главное меню

локальное (по правой кнопке мыши) меню

2

Label1

(метка)

Caption

Минимальные числа в порядке возрастания по столбцам

надпись

3

Label2

(метка)

Caption

Выберите размерность матрицы в пределах

[2..6] 

надпись

4

Label3

(метка)

Caption

N=2

надпись

5

Button1

(кнопка)

Caption

OnClik

(стр. Events)

Выполнить

Button1Click

надпись

событие (щелчок)

6

Button2

(кнопка)

Caption

OnClik

(стр. Events)

Выход

Button2Click

надпись

событие (щелчок)

7

StaticText1

(метка для отображения текста)

Caption

Введите

матрицу А

Введите

матрицу В

Введите

матрицу С

надпись

1

2

3

4

5

8

StringGrid1 (таблица строк)

FixeCols,

FixedRows

ColCount

RowCount

Option

OnKeyPress

1

3

3

goTabs

goEdeting

String-

Grid1KeyPress

число фиксированных столбцов, рядов

начальное значение числа столбцов

начальное значение числа рядов (строк)

перемещение по ячейкам таблицы по TAB (Shift+TAB)

разрешено редактирование (щелчок мыши или F2, завершается по Enter или щелчке по другой ячейке)

событие (нажатие АЦ клавиши)

9

StringGrid2

(таблица строк)

ColCount

RowCount

FixedCols, FixedRows

Options

OnKeyPress

3

3

1

goTabs

goEditing

String-

Grid1KeyPress

начальное значение числа столбцов

начальное значение числа строк

количество фиксиро-ванных столбцов,рядов

перемещение по ячейкам таблицы по TAB (Shift+TAB)

разрешено редактирование

событие (нажатие АЦ клавиши)

10

StringGrid3

(таблица строк)

ColCount

RowCount

FixedCols, FixedRows

3

3

3

число столбцов

число строк

количество фиксиро-ванных столбцов, рядов

1

2

3

4

5

11

TrackBar1

(регулятор величины, W32)

Max

Min

Frequency

Position

Orientation

TickMark

OnChange

(стр. Events)

6

2

1

2

trHorizontal

tmBottomRight

TrackBar1Change

Максимальное,

минимальное значение диапазона

частота нанесения меток (1-каждое значение)

текущее положение ползунка

ориентация компонента (горизонтальная)

способ нанесения меток (внизу)

событие (при изме- нении положения ползунка)

12

MainMenu1

(главное меню)

Описание свойств и пунктов меню см. лаб. раб. №3

13

PopUp-

Menu1

(локальное меню)

Описание свойств и пунктов меню см. лаб. раб. №3

Компонент класса TTrackBar предназначен для визуального управления числовой величиной. Он во многом схож со стандартным элементом TScrollBar и отличается от него в основном оформлением.

Свойство Frequency может иметь не только значения 1, но и 2, тогда каждое второе значение будет иметь метку и т.д. Ориентация может быть вертикальной (Orientation=trVertical). Метки (свойство TickMarks) могут быть внизу или справа (tmBottomRight) , вверху или слева (tmTopLeft), по обеим сторонам (tmBottom).

4.Форма задания

5. Текст программы.

unit UMain8;

interface

uses

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

Dialogs, Grids, StdCtrls, Menus, ComCtrls;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

Button2: TButton;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

StaticText1: TStaticText;

MainMenu1: TMainMenu;

N1: TMenuItem;

N2: TMenuItem;

N3: TMenuItem;

N4: TMenuItem;

N5: TMenuItem;

N6: TMenuItem;

N7: TMenuItem;

About1: TMenuItem;

Label1: TLabel;

TrackBar1: TTrackBar;

Label2: TLabel;

Label3: TLabel;

PopupMenu1: TPopupMenu;

N8: TMenuItem;

N9: TMenuItem;

N10: TMenuItem;

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure N6Click(Sender: TObject);

procedure About1Click(Sender: TObject);

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

procedure TrackBar1Change(Sender: TObject);

procedure N10Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const

size=4;

var

Form1: TForm1;

implementation

uses UAbout;

var

N : integer = 2;

S:array[2..6]of Integer = (97,129,161,193,225);

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.Button1Click(Sender: TObject);

const

size=100;

var

A : array[1..size,1..size] of Integer;

B : array[1..size,1..size] of Integer;

k,i,j,min : Integer;

St : String;

begin

{Insert Matrixs}

for i:=1 to N do

for j:=1 to N do

begin

if Length(StringGrid1.Cells[i,j])<>0 then

A[i,j]:=StrToInt(StringGrid1.Cells[i,j]) else A[i,j]:=0;

if Length(StringGrid2.Cells[i,j])<>0 then

B[i,j]:=StrToInt(StringGrid2.Cells[i,j]) else B[i,j]:=0

end;

{Selected and Summa Matrixs}

for i:=1 to N do

begin

min:=1;

for k:=2 to N do

begin

if B[i,k]<B[i,min] then min:=k;

for j:=1 to N do

StringGrid3.Cells[i,j]:=IntToStr(A[i,j]+B[i,min]);

end;

st:=st+' , '+IntToStr(B[i,min]);

end;

label1.Caption:='Минимальные числа в порядке возврастания'+#13

+'по столбцам : '+St;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

ShowMessage('Даны две матрицы,получить новую прибавлением к'+

' элементам каждого столбца первой матрице минимльного'+

' элемента соответствующего элемента второй матрице .');

end;

procedure TForm1.About1Click(Sender: TObject);

begin

Application.CreateForm(TForm2, Form2);

end;

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

begin

case Key of

#8,'0'..'9','-':;

else Key:=Chr(0);

end;

end;

procedure TForm1.TrackBar1Change(Sender: TObject);

var

i : Integer;

begin

N:=TrackBar1.Position;

Label3.Caption:=' N = '+IntToStr(N);

StringGrid1.ColCount:=N+1;

StringGrid1.RowCount:=N+1;

StringGrid1.Height:=S[N];

StringGrid1.Width:=S[N];

StringGrid2.ColCount:=N+1;

StringGrid2.RowCount:=N+1;

StringGrid2.Height:=S[N];

StringGrid2.Width:=S[N];

StringGrid3.ColCount:=N+1;

StringGrid3.RowCount:=N+1;

StringGrid3.Height:=S[N];

StringGrid3.Width:=S[N];

StringGrid1.Cells[0,0]:=' A:';

StringGrid2.Cells[0,0]:=' B:';

StringGrid3.Cells[0,0]:='C:';

for i:=1 to N+1 do

begin

StringGrid1.Cells[0,i]:=IntToStr(i);

StringGrid1.Cells[i,0]:=IntToStr(i);

StringGrid2.Cells[0,i]:=IntToStr(i);

StringGrid2.Cells[i,0]:=IntToStr(i);

StringGrid3.Cells[0,i]:=IntToStr(i);

StringGrid3.Cells[i,0]:=IntToStr(i);

end;

end;

procedure TForm1.N10Click(Sender: TObject);

var

i,j:integer;

begin

for i:=1 to 6 do

for j:=1 to 6 do

begin

StringGrid1.Cells[i,j]:='';

StringGrid2.Cells[i,j]:='';

StringGrid3.Cells[i,j]:='';

end;

end;

end.

6. Комментарии к тексту программы

Процедура Button2Click закрывает форму.

Процедура N6Click инициируется при выборе пункта меню, выводится на экран cообщение об условиях задания.

Процедура About1Click инициируется при выборе пункта меню, на форму Form1 выводится форма Form2, содержащая рекламную информацию.

Процедура N10Click инициируется при выборе пункта меню, очищает ячейки всех трех таблиц.

Процедура StringGrid1KeyPress реализует форматный ввод в ячейки таблицы. Игнорируются любые нажатия алфавитно-цифровых клавиш кроме цифр числа и знака.

Процедура TrackBar1Change инициируется при изменении положения бегунка. Выбранное значение отображается на метке (N= ) и приводит к изменению размеров компонент StringGrid1, StringGrid2, StringGrid3. Осуществляется это путем изменения числа столбцов и рядов, а также высоты и ширины таблицы строк. Затем заполняется фиксированная часть компонент и начальные значения ячеек таблицы.

Процедура Button1Click реализует действия, определенные заданием. Поиск минимального значения осуществляется стандартным образом.

7. Содержание отчета

  • задание;

  • описание свойств используемых компонентов и форм;

  • текст программы с комментариями;

  • результаты вычислений.

8. Тренировочные вопросы к защите:

  1. В чем функциональное назначение компонента TrackBar?

  2. Как определяется частота нанесения меток в компоненте TrackBar?

  3. Какое свойство компонента TrackBar определяет способ нанесения меток?

  4. Какой стиль нанесения меток определен, если свойство TickStyle=tsAuto?