Учебный курс Программирование на Delphi. Модуль 11: различия между версиями
| Строка 30: | Строка 30: | ||
*'''Программный код:''' | *'''Программный код:''' | ||
| − | + | unit Unit1; | |
| − | + | interface | |
| − | + | uses | |
| + | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, | ||
| + | Dialogs, StdCtrls, Buttons, Grids; | ||
| + | type | ||
| + | TForm1 = class(TForm) | ||
| + | StringGrid1: TStringGrid; | ||
| + | BitBtn1: TBitBtn; | ||
| + | BitBtn2: TBitBtn; | ||
| + | procedure BitBtn2Click(Sender: TObject); | ||
| + | procedure BitBtn1Click(Sender: TObject); | ||
| + | private | ||
| + | { Private declarations } | ||
| + | public | ||
| + | { Public declarations } | ||
| + | end; | ||
| + | var | ||
| + | Form1: TForm1; | ||
| + | implementation | ||
| + | {$R *.dfm} | ||
| + | type mat=array[1..9,1..9] of integer; | ||
| + | var i,j:integer; | ||
| + | p:mat; | ||
| + | procedure TForm1.BitBtn2Click(Sender: TObject); | ||
begin | begin | ||
| − | + | close; | |
| − | + | end; | |
| − | + | procedure TForm1.BitBtn1Click(Sender: TObject); | |
| − | + | begin | |
| − | + | for i:=1 to 9 do | |
| − | + | begin | |
| − | + | for j:=1 to 9 do | |
| − | + | begin | |
| − | + | p[i,j]:=i*j; | |
| + | stringgrid1.Cells[j-1,i-1]:=inttostr(p[i,j]); | ||
| + | end; | ||
| + | end; | ||
| + | end; | ||
end. | end. | ||
| Строка 70: | Строка 96: | ||
BitBtn2 - для закрытия формы | BitBtn2 - для закрытия формы | ||
*'''Программный код:''' | *'''Программный код:''' | ||
| − | type x = array[1.. | + | unit Unit1; |
| − | + | interface | |
| − | + | uses | |
| + | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, | ||
| + | Dialogs, StdCtrls, Buttons, Grids; | ||
| + | type | ||
| + | TForm1 = class(TForm) | ||
| + | Label1: TLabel; | ||
| + | StringGrid1: TStringGrid; | ||
| + | Label2: TLabel; | ||
| + | StringGrid2: TStringGrid; | ||
| + | BitBtn1: TBitBtn; | ||
| + | BitBtn2: TBitBtn; | ||
| + | procedure BitBtn2Click(Sender: TObject); | ||
| + | procedure BitBtn1Click(Sender: TObject); | ||
| + | private | ||
| + | { Private declarations } | ||
| + | public | ||
| + | { Public declarations } | ||
| + | end; | ||
| + | var | ||
| + | Form1: TForm1; | ||
| + | implementation | ||
| + | {$R *.dfm} | ||
| + | type x=array[1..4,1..3] of integer; | ||
| + | y=array[1..4] of integer; | ||
| + | var i,j:integer; | ||
| + | a:x; b:y; | ||
| + | procedure TForm1.BitBtn2Click(Sender: TObject); | ||
| + | begin | ||
| + | close; | ||
| + | end; | ||
| + | procedure TForm1.BitBtn1Click(Sender: TObject); | ||
begin | begin | ||
| − | + | randomize; | |
| − | + | for i:=1 to 3 do begin | |
| − | + | for j:=1 to 4 do | |
| − | + | begin | |
| − | + | a[i,j]:=random(41)-10; | |
| − | + | stringgrid1.Cells[j-1,i-1]:=inttostr(a[i,j]); | |
| − | + | end; | |
| − | end; | + | end; |
| − | + | for j:=1 to 4 do | |
| − | + | begin | |
| − | + | b[j]:=a[1,j]; | |
| − | + | for i:=2 to 3 do | |
| − | + | if b[j]<a[i,j] then b[j]:=a[i,j]; | |
| − | + | stringgrid2.Cells[j-1,0]:=inttostr(b[j]); | |
| − | + | end; | |
| − | + | end; | |
| − | |||
end. | end. | ||
| + | |||
Версия 08:34, 1 марта 2008
Описание двумерного массива
Двумерный массив состоит из элементов с двумя индексами: один показывает номер строки в
массиве, другой - номер столбца.
В Delphi возможны массивы и большей размерности. Для их описания возможны два подхода:
а) массив рассматривается как массив других массивов:
type x = array[1..100] of real; y = array[1..2] of x;
б) массив рассматривается как многоиндексный
type y = array [ 1...100, 1...2 ] of real;
Оба описания равноценны.
Пример 1
- Условие.
Получить матрицу, элементами которой являются произведения номеров строк i и номеров столбцов j.
- Использованные компоненты:
StringGrid1 - для выврда результирующей таблицы
BitBtn1 - для запуска программы
BitBtn2 - для закрытия формы
- Программный код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type mat=array[1..9,1..9] of integer;
var i,j:integer;
p:mat;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
for i:=1 to 9 do
begin
for j:=1 to 9 do
begin
p[i,j]:=i*j;
stringgrid1.Cells[j-1,i-1]:=inttostr(p[i,j]);
end;
end;
end;
end.
- Форма с результатом работы программы.
Пример 2
- Условие.
Из матрицы А[3,4] получить вектор В, элементами которого являются наибольшие элементы столбцов матрицы.
- Использованные компоненты:
StringGrid1 - для вывода исходной матрицы
StringGrid2 - для вывода результирующего вектора
Label1 - для подписи матрицы
Label2 - для подписи вектора
BitBtn1 - для запуска программы
BitBtn2 - для закрытия формы
- Программный код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
StringGrid1: TStringGrid;
Label2: TLabel;
StringGrid2: TStringGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type x=array[1..4,1..3] of integer;
y=array[1..4] of integer;
var i,j:integer;
a:x; b:y;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
randomize;
for i:=1 to 3 do begin
for j:=1 to 4 do
begin
a[i,j]:=random(41)-10;
stringgrid1.Cells[j-1,i-1]:=inttostr(a[i,j]);
end;
end;
for j:=1 to 4 do
begin
b[j]:=a[1,j];
for i:=2 to 3 do
if b[j]<a[i,j] then b[j]:=a[i,j];
stringgrid2.Cells[j-1,0]:=inttostr(b[j]);
end;
end;
end.
- Форма с результатом работы программы.
Задание
| Номер варианта | Условие |
|---|---|
| Для данного целого положительного n создать матрицу A(n,n), в которой элементы, стоящие по диагонали, равны единице, а все остальные элементы - нулевые. | |
| Для данного целого положительного n сформировать матрицу A(n,n), в которой элементы диагонали равны номеру строки, а все остальные элементы - нулевые. | |
| В матрице A(n,n) поменять местами две строки с номерами р и q. | |
| В матрице A(n,m) поэлементно вычесть последнюю строку из всех строк, кроме последней. | |
| В матрице х(k,l) поменять местами максимальный и минимальный элементы. | |
| Матрицу A(n,n) сформировать по следующему принципу: по диагонали расположены единицы, выше диагонали - нули, а элементы, расположенные ниже диагонали, равны сумме соответствующих индексов. | |
| Задана матрица В(3,5). Получить матрицу V путем удаления из В строки и столбца, в которых содержится минимальный элемент. | |
| Дана матрица A(m,n). Дополнить ее (m+1)-й строкой и (n+1)-м столбцом, в которых записать суммы элементов соответствующих строк или столбцов исходного массива А. | |
| Транспонировать матрицу x(m,n). | |
| Из матрицы А(3,4) получить вектор В, элементами которого являются произведения элементов в каждой строке матрицы. | |
| Создать вектор М, содержащий количество отрицательных элементов каждого столбца матрицы z(3,4). | |
| Сформировать матрицу У(n,n) таким образом, чтобы значения всех элементов 1-го столбца были равны 1, второго - 2, n-го - n. | |
| Имеется матрица A(m,n). Найти максимальный из всех минимальных элементов строк. Вывести номер строки, в которой расположено выбранное число. | |
| Сформировать диагональную матрицу C(m,m). У диагональной матрицы все элементы равны нулю, кроме диагональных. |
Таблица 20
Литература
- Архангельский. Программирование на Delphi 6. – М: БИНОМ, 2002
- Бобровский С. Delphi 7. Учебный курс. – СПб: Питер, 2003
- Культин Н. Основы программирования в Delphi 7. СПб: БХВ-Петербург, 2005.