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

Praktikum_2008

.pdf
Скачиваний:
292
Добавлен:
06.06.2015
Размер:
8.23 Mб
Скачать

 

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

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