Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Praktikum_2008

.pdf
Скачиваний:
293
Добавлен:
06.06.2015
Размер:
8 Мб
Скачать
☆

 

FixedCol

1

 

Количество

 

фик-

 

 

 

 

сированных

 

слева

 

 

 

 

столбцов

 

 

 

 

FixedRow

1

 

Количество

 

фик-

 

 

 

 

сированных

 

свер-

 

 

 

 

ху строк

 

 

 

 

Options:

 

 

Опции:

 

 

 

 

goFixedVertLine

True

 

Разметка

 

зафик-

 

 

 

 

сированных

 

вер-

 

 

 

 

тикальных линий

 

goFixedHorzLine

True

 

Разметка

 

зафик-

 

 

 

 

сированных

 

гори-

 

 

 

 

зонтальных линий

 

goVertLine

True

 

Разметка

 

верти-

 

 

 

 

кальных

 

линий

 

 

 

 

внутри таблицы

 

goHorzLine

True

 

Разметка

горизон-

 

 

 

 

тальных

 

линий

 

 

 

 

внутри таблицы

 

goTabs

True

 

Разрешает

 

ис-

 

 

 

 

пользование

кла-

 

 

 

 

виши Tab для пе-

 

 

 

 

ремещения в дру-

 

 

 

 

гую ячейку

 

 

 

goAlwaysShowE-

True

 

Признак

нахожде-

 

ditor

 

 

ния компонента в

 

 

 

 

режиме

редакти-

 

 

 

 

рования

 

 

 

Form2.Button1

Caption

Выход

 

Кнопка для закры-

 

 

 

 

тия окна “Транс-

 

 

 

 

понированная

 

 

 

 

матрица”

 

 

 

Form3

Caption

След матрицы

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

Label1

Caption

Сумма

главных

Справочная

 

ин-

 

 

диагональных

формация

 

для

 

 

элементов матри-

пользователя про-

 

 

цы

называется

граммы

 

 

 

 

 

следом матрицы

Поле для вывода,

Label2

Caption

 

 

 

 

 

 

рассчитанного

 

 

 

 

программой

 

зна-

 

 

 

 

чения следа

мат-

 

 

 

 

рицы

 

 

 

391

Form3.Button1

Caption

Выход

Кнопка для закры-

 

 

 

тия окна “След

 

 

 

матрицы”

Переменные и массивы

Обозначение

Содержание

Тип

в программе

 

 

N

Порядок квадратной матрицы

Целый

M

Квадратная матрица действитель-

Вещественный,

 

ных чисел

расширенный

I

Текущий номер строки матрицы или

Целый

 

столбца в StringGrid

 

J

Текущий номер столбца матрицы

Целый

 

или строки в StringGrid

 

Sled

След матрицы

Вещественный,

 

 

расширенный

Проекты форм

Для решения данной задачи рекомендуется создать три окна.

392

Текст модуля

unit Unit1; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids,Unit2,Unit3;

// подключаются модули, связанные со второй и третьей формами type

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel;

393

Edit1: TEdit; StringGrid1: TStringGrid; Button1: TButton; Button2: TButton; Button3: TButton;

procedure Button1Click(Sender: TObject); procedure Edit1Exit(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject);

private

{Private declarations } public

{Public declarations }

M :array [1..100,1..100] of Extended; // квадратная матрица

N:Integer;// порядок матрицы

Sled: Extended; // след матрицы end;

var

Form1: TForm1; implementation {$R *.dfm}

//процедура читает из таблицы на главной форме квадратную матрицу

//транспонирует матрицу и выводит в таблицу StringGrid

//на вторую форму

procedure TForm1.Button1Click(Sender: TObject);

Var i:Integer; // номер строки матрицы/номер столбца StringGrid j:Integer; // номер столбца матрицы/номер строки StringGrid

begin

//чтение значений квадратной матрицы из компонента StringGrid

//главной формы

For i:=1 to StringGrid1.RowCount-1 do For j:=1 to StringGrid1.ColCount-1 do

begin M[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);

end;

//открывается вторая форма

Form2.Show;

//количеству строк и столбцов компонента StringGrid на второй форме

//присваивается значение порядок: матрицы +1 Form2.StringGrid1.RowCount:=N+1; Form2.StringGrid1.ColCount:=N+1;

//подписываются заголовок таблицы, и номера строк

For i:=1 to Form2.StringGrid1.RowCount do

394

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

For j:=1 to Form2.StringGrid1.ColCount do

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

{вывод в компонент StringGrid на второй форме транспонированной матрицы}

{Транспонированная матрица не создается. Транспонирование осуществляется путем вывода столбца исходной матрицы в строку компонента

StringGrid. В StringGrid номер столбца i, номер строки j.} For i:=1 to Form2.StringGrid1.ColCount-1 do

For j:=1 to Form2.StringGrid1.RowCount-1 do Form2.StringGrid1.Cells[i,j]:=FloatToStr(M[i,j]);

end;

{Процедура подготовки таблицы на форме для ввода квадратной матрицы, которая выполняется при выходе из поля ввода размерности матрицы.}

procedure TForm1.Edit1Exit(Sender: TObject);

Var i,j:Integer;//номера строки столбца квадратной матрицы begin

// порядок матрицы получает свое значение из поля ввода

N:=StrToInt(Edit1.Text);

//свойство количество строк компонента StringGrid

//получает значение: порядок +1

StringGrid1.RowCount:=N+1;

//свойство количество столбцов компонента StringGrid

//получает значение порядок: +1 StringGrid1.ColCount:=N+1; //подпись заголовка таблицы

For i:=1 to StringGrid1.RowCount do StringGrid1.Cells[i,0]:= IntToStr(i); //подпись строк таблицы

For j:=1 to StringGrid1.ColCount do StringGrid1.Cells[0,j]:= IntToStr(j);

//добавление в свойства таблицы признака

//допустимости редактирования содержимого ячеек таблицы

StringGrid1.Options:= StringGrid1.Options +[goEditing]; end;

procedure TForm1.Button3Click(Sender: TObject); begin

Form1.Close

end;

//процедура вычисляет след матрицы и выводит результат

//на третью форму

procedure TForm1.Button2Click(Sender: TObject);

Var i: Integer;

395

begin

Sled:=0;

Form3.Show;

For i:=1 to Form1.StringGrid1.ColCount-1 do Sled:= Sled + M[i,i];

Form3.Label2.Caption:=' След матрицы равен ' + FloatToStr(Sled) end;

end.

{ Модуль, связанный со второй формой} unit Unit2;

interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids;

type

TForm2 = class(TForm) StringGrid1: TStringGrid; Button1: TButton;

procedure Button1Click(Sender: TObject); private

{Private declarations } public

{Public declarations }

end; var

Form2: TForm2; implementation {$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject); begin

Form2.Close

end;

end.

{ Модуль, связанный с третьей формой.}

unit Unit3; interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm3 = class(TForm) Label1: TLabel;

396

Label2: TLabel;

Button1: TButton;

procedure Button1Click(Sender: TObject); private

{Private declarations } public

{Public declarations }

M :array [1..100,1..100] of Extended; N:Integer;

Sled: Extended; end;

var

Form3: TForm3; implementation {$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject); begin

Form3.Close

end;

end.

Тестовый пример

397

Задачи для самостоятельного решения

Группа А

№ 6.1. Дана действительная матрица размера N х M элементов:

398

a11 a12 a13 ... a1m а21 a22 a23 ... a2m

.................... …

аn1 an2 an3 ... anm

Найти сумму положительных элементов матрицы.

№6.2. Дана целочисленная квадратная матрица порядка n. Найти номера строк: а) все элементы которых — нули; б) все элементы которых четны.

№6.3. Дана действительная матрица размера N х M элементов, все элементы которой различны. Найти наибольший и наименьший элементы матрицы.

№6.4. Дана целочисленная квадратная матрица порядка n. Подсчитать: а) количество нулей, стоящих на главной диагонали; б) количество единиц в матрице.

№6.5. Дана действительная матрица размера N х M элементов, все элементы которой различны. Указать номер строки и столбца, на пересечении которых находится минимальный элемент матрицы. Подсчитать количество отрицательных элементов.

№6.6. Дана целочисленная квадратная матрица порядка n. Найти номера строк: а) все элементы которых положительны; б) все элементы которых нечетны.

№6.7. Дана целочисленная квадратная матрица порядка n. Найти номера столбцов: а) все элементы которых отрицательны; б) все элементы которых равны нулю.

№6.8. Дана действительная матрица размера N х M элементов:

a11 a12 a13 ... a1m а21 a22 a23 ... a2m

.................... …

аn1 an2 an3 ... anm

Найти номера строк матрицы, где все элементы различны.

№6.9. Дана целочисленная квадратная матрица порядка n. Подсчитать: а) произведение элементов главной диагонали; б) количество нулей.

№6.10. Дана действительная матрица размера N х M элементов, все элементы которой различны. Вывести элементы матрицы, которые меньше среднего арифметического из ее элементов.

Группа Б

399

№6.11. Дана матрица A размера N х M элементов, содержащая вещественные числа,. Сформировать из нее массив B, состоящий из сумм положительных элементов каждой строки; если таких в строке нет, результат должен быть равен 0.

№6.12. Дана матрица A размера N х M элементов, содержащая вещественные числа,. Сформировать из нее массив B, состоящий из произведений положительных элементов каждой строки; если таких в строке нет, результат должен быть равен 0.

№6.13. Дана матрица A размера N х M элементов , содержащая вещественные числа. Сформировать из нее массив B, состоящий из сумм отрицательных элементов каждой строки; если таких в строке нет, результат должен быть равен 0.

№6.14 Дана матрица A размера N х M элементов, содержащая вещественные числа. Сформировать из нее массив B, состоящий из числа отрицательных элементов каждой строки.

№6.15. Дана действительная матрица размера N х M элементов:

| a11 a12 a13

... a1m|

|а21 a22 a23 ...

a2m |

| ....................

|

|аn1 an2 an3 ...

anm|

Получить последовательность b1,..., bn, где bk — произведение квадратов тех элементов k-й строки, модули которых принадлежат отрезку [1,1.5].

№6.16. Даны: натуральное число n, целочисленная квадратная матрица порядка n. Получить последовательность b1,...,bn, где bi

— сумма элементов, расположенных за первым отрицательным элементом в i-й строке (если все элементы строки неотрицательны, то принять bi= –1).

№6.17. Дана действительная матрица размера n x m, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент.

№6.18. Даны натуральное число n, действительное число x, действительная матрица размера n х 2n. Получить последовательность b1,...,bn из нулей и единиц, где bi=1, если элементы i-й строки матрицы не превосходят х, и bi=0 в противном случае.

400

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