Учебный курс Программирование на Delphi. Модуль 11: различия между версиями
(→Пример 2) |
(→Задание) |
||
(не показано 10 промежуточных версий 3 участников) | |||
Строка 17: | Строка 17: | ||
Оба описания равноценны. | Оба описания равноценны. | ||
== Пример 1== | == Пример 1== | ||
− | ''' | + | *'''Условие:''' |
Получить матрицу, элементами которой являются произведения номеров строк i и номеров столбцов j. | Получить матрицу, элементами которой являются произведения номеров строк i и номеров столбцов j. | ||
− | ''' | + | *'''Использованные компоненты:''' |
StringGrid1 - для выврда результирующей таблицы | StringGrid1 - для выврда результирующей таблицы | ||
Строка 29: | Строка 29: | ||
BitBtn2 - для закрытия формы | 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 | 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. | ||
− | ''' | + | *'''Форма с результатом работы программы.''' |
+ | |||
[[Изображение:-6-1.JPG]] | [[Изображение:-6-1.JPG]] | ||
+ | |||
== Пример 2== | == Пример 2== | ||
− | *'''Условие | + | *'''Условие:''' |
Из матрицы А[3,4] получить вектор В, элементами которого являются наибольшие элементы столбцов матрицы. | Из матрицы А[3,4] получить вектор В, элементами которого являются наибольшие элементы столбцов матрицы. | ||
Строка 60: | Строка 88: | ||
StringGrid2 - для вывода результирующего вектора | StringGrid2 - для вывода результирующего вектора | ||
− | Label1 - для | + | Label1 - для вывода текстовых сообщений |
− | Label2 - для | + | Label2 - для вывода текстовых сообщений |
BitBtn1 - для запуска программы | BitBtn1 - для запуска программы | ||
Строка 68: | Строка 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 | begin | ||
− | + | close; | |
− | + | end; | |
− | + | procedure TForm1.BitBtn1Click(Sender: TObject); | |
− | + | begin | |
− | + | randomize; | |
− | + | for i:=1 to 3 do begin | |
− | + | for j:=1 to 4 do | |
− | end; | + | 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. | end. | ||
+ | |||
Строка 97: | Строка 155: | ||
==Задание== | ==Задание== | ||
− | Таблица | + | <CENTER>'''Таблица №19'''</CENTER> |
+ | {| border=1 | ||
+ | |- | ||
+ | !Номер варианта||Условие | ||
+ | |- | ||
+ | |<center>1</center>||Для данного целого положительного n создать матрицу A(n,n), в которой элементы, стоящие по диагонали, равны единице, а все остальные элементы - нулевые. | ||
+ | |- | ||
+ | |<center>2</center>||Для данного целого положительного n сформировать матрицу A(n,n), в которой элементы диагонали равны номеру строки, а все остальные элементы - нулевые. | ||
+ | |- | ||
+ | |<center>3</center>||В матрице A(n,n) поменять местами две строки с номерами р и q. | ||
+ | |- | ||
+ | |<center>4</center>||В матрице A(n,m) поэлементно вычесть последнюю строку из всех строк, кроме последней. | ||
+ | |- | ||
+ | |<center>5</center>||В матрице х(k,l) поменять местами максимальный и минимальный элементы. | ||
+ | |- | ||
+ | |<center>6</center>||Матрицу A(n,n) сформировать по следующему принципу: по диагонали расположены единицы, выше диагонали - нули, а элементы, расположенные ниже диагонали, равны сумме соответствующих индексов. | ||
+ | |- | ||
+ | |<center>7</center>||Задана матрица В(3,5). Получить матрицу V путем удаления из В строки и столбца, в которых содержится минимальный элемент. | ||
+ | |- | ||
+ | |<center>8</center>||Дана матрица A(m,n). Дополнить ее (m+1)-й строкой и (n+1)-м столбцом, в которых записать суммы элементов соответствующих строк или столбцов исходного массива А. | ||
+ | |- | ||
+ | |<center>9</center>||Транспонировать матрицу x(m,n). | ||
+ | |- | ||
+ | |<center>10</center>||Из матрицы А(3,4) получить вектор В, элементами которого являются произведения элементов в каждой строке матрицы. | ||
+ | |- | ||
+ | |<center>11</center>||Создать вектор М, содержащий количество отрицательных элементов каждого столбца матрицы z(3,4). | ||
+ | |- | ||
+ | |<center>12</center>||Сформировать матрицу У(n,n) таким образом, чтобы значения всех элементов 1-го столбца были равны 1, второго - 2, n-го - n. | ||
+ | |- | ||
+ | |<center>13</center>||Имеется матрица A(m,n). Найти максимальный из всех минимальных элементов строк. Вывести номер строки, в которой расположено выбранное число. | ||
+ | |- | ||
+ | |<center>14</center>||Сформировать диагональную матрицу C(m,m). У диагональной матрицы все элементы равны нулю, кроме диагональных. | ||
+ | |||
+ | |} | ||
+ | |||
+ | <CENTER>'''Таблица №20'''</CENTER> | ||
+ | {| border=1 | ||
+ | |- | ||
+ | !Номер варианта||Условие | ||
+ | |- | ||
+ | |<center>1</center>||Найти среднее арифметическое элементов матрицы Х(n,m) и сформировать вектор У из элементов, больших среднего арифметического. | ||
+ | |- | ||
+ | |<center>2</center>||Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. | ||
+ | |- | ||
+ | |<center>3</center>||Из матрицы У(k,k) получить вектор Т, элементами которого являются элементы главной диагонали матрицы. | ||
+ | |- | ||
+ | |<center>4</center>||Сформировать матрицу Z(n,n) по следующему правилу: элементы, расположенные выше диагонали, равны нулю, а остальные элементы имеют произвольные значения. | ||
+ | |- | ||
+ | |<center>5</center>||Заполнить массив A(n,m) целыми случайными числами таким образом, чтобы и в каждой строке и в каждом столбце каждый следующий элемент был не меньше предыдущего элемента. | ||
+ | |- | ||
+ | |<center>6</center>||В матрице X(m,m) найти максимальный диагональный элемент и вывести всю строку, в которой он расположен. | ||
+ | |- | ||
+ | |<center>7</center>||Вычислить сумму элементов двух главных диагоналей матрицы С(5,5). | ||
+ | |- | ||
+ | |<center>8</center>||Вычислить среднее арифметическое четных элементов матрицы У(4,5). | ||
+ | |- | ||
+ | |<center>9</center>||Дана матрица X(m,m). Сформировать вектор из элементов, расположенных по спирали. | ||
+ | [[Изображение:Т14-З9.JPG]] | ||
+ | |||
+ | Пример заполнения матрицы (3,3). | ||
+ | |- | ||
+ | |<center>10</center>||Сформировать вектор С из элементов матрицы L(m,n), больших заданного числа Z. | ||
+ | |- | ||
+ | |<center>11</center>||Вычислить сумму элементов матрицы X(l,l), расположенных в закрашенной области. | ||
+ | [[Изображение:Т14-З11.JPG]] | ||
+ | |- | ||
+ | |<center>12</center>||Найти произведение элементов матрицы T(k,k), расположенных в закрашенной области. | ||
+ | [[Изображение:Т14-З12.JPG]] | ||
+ | |- | ||
+ | |<center>13</center>||Сформировать Вектор Т из четных элементов матрицы P(k,l). Найти в нем максимальный элемент. | ||
+ | |- | ||
+ | |<center>14</center>||Найти разность среднего арифметического элементов первых трех и элементов последних трех столбцов матрицы X(5,6). | ||
− | + | |} | |
==Литература== | ==Литература== |
Текущая версия на 11:01, 20 мая 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). У диагональной матрицы все элементы равны нулю, кроме диагональных. |
Номер варианта | Условие |
---|---|
Найти среднее арифметическое элементов матрицы Х(n,m) и сформировать вектор У из элементов, больших среднего арифметического. | |
Сформировать одномерный массив из элементов, стоящих над главной диагональю матрицы K(m,m). Найти сумму элементов этого массива. | |
Из матрицы У(k,k) получить вектор Т, элементами которого являются элементы главной диагонали матрицы. | |
Сформировать матрицу Z(n,n) по следующему правилу: элементы, расположенные выше диагонали, равны нулю, а остальные элементы имеют произвольные значения. | |
Заполнить массив A(n,m) целыми случайными числами таким образом, чтобы и в каждой строке и в каждом столбце каждый следующий элемент был не меньше предыдущего элемента. | |
В матрице X(m,m) найти максимальный диагональный элемент и вывести всю строку, в которой он расположен. | |
Вычислить сумму элементов двух главных диагоналей матрицы С(5,5). | |
Вычислить среднее арифметическое четных элементов матрицы У(4,5). | |
Дана матрица X(m,m). Сформировать вектор из элементов, расположенных по спирали.
Пример заполнения матрицы (3,3). | |
Сформировать вектор С из элементов матрицы L(m,n), больших заданного числа Z. | |
Вычислить сумму элементов матрицы X(l,l), расположенных в закрашенной области. | |
Найти произведение элементов матрицы T(k,k), расположенных в закрашенной области. | |
Сформировать Вектор Т из четных элементов матрицы P(k,l). Найти в нем максимальный элемент. | |
Найти разность среднего арифметического элементов первых трех и элементов последних трех столбцов матрицы X(5,6). |
Литература
- Архангельский. Программирование на Delphi 6. – М: БИНОМ, 2002
- Бобровский С. Delphi 7. Учебный курс. – СПб: Питер, 2003
- Культин Н. Основы программирования в Delphi 7. СПб: БХВ-Петербург, 2005.