
21.05.2010, 10:59
|
Прохожий
|
|
Регистрация: 21.05.2010
Сообщения: 1
Репутация: 9
|
|
ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ С ИСПОЛЬЗОВАНИЕМ МАССИВОВ
Код:
Unit UnMas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
SpinEdit1: TSpinEdit;
SpinEdit2: TSpinEdit;
Label8: TLabel;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
StringGrid3: TStringGrid;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
SpinEdit3: TSpinEdit;
SpinEdit4: TSpinEdit;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure SpinEdit1Change(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
A:array[1..6,1..8] of extended;// объявление двумерного массива A
X:array[1..8] of extended; // объявление одномерного массива X
Y:array[1..6] of extended; // объявление одномерного массива Y
n,m,p,q:integer; // объявление глобальных переменных
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.Text:='4'; // начальное значение n
SpinEdit2.Text:='6'; // начальное значение m
SpinEdit3.Text:='2'; // начальное значение p
SpinEdit4.Text:='3'; // начальное значение q
StringGrid1.RowCount:=4; // количество строк массива A
StringGrid1.ColCount:=6; // количество столбцов массива A
StringGrid2.RowCount:=6; // количество строк массива X
StringGrid3.RowCount:=4; // количество строк массива Y
end;
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
n:=StrToInt(SpinEdit1.Text);// n присваивается содержимое поля редактора
StringGrid1.RowCount:=n; // устанавливается количество строк массива A
StringGrid3.RowCount:=n; // устанавливается количество строк массива Y
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
m:=StrToInt(SpinEdit2.Text);// m присваивается содержимое поля редактора
StringGrid1.ColCount:=m; // устанавливается количество столбцов массива A
StringGrid2.RowCount:=m; // устанавливается количество строк массива X
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer; // объявление локальных переменных
begin
n:=StrToInt(SpinEdit1.Text);
StringGrid1.RowCount:=n;
StringGrid3.RowCount:=n;
m:=StrToInt(SpinEdit2.Text);
StringGrid1.ColCount:=m;
StringGrid2.RowCount:=m;
p:=StrToInt(SpinEdit3.Text);
q:=StrToInt(SpinEdit4.Text);
// Ввод значений из таблицы в массив A
for i:=1 to n do
for j:=1 to m do
A[i,j]:=StrToFloat(StringGrid1.Cells[j-1,i-1]);
for j:=1 to m do // формирование массива X и вывод его значений в таблицу
begin
X[j]:=A[p,j];
StringGrid2.Cells[0,j-1]:=FloatToStrF(X[j],ffFixed,3,1);
end;
for i:=1 to n do // формирование массива Y и вывод его значений в таблицу
begin
Y[i]:=A[i,q];
StringGrid3.Cells[0,i-1]:=FloatToStrF(Y[i],ffFixed,3,1);
end;
end;
end.
решение похожей задачи. кто сможет переделать под эту: Задана символьная матрица размером NxM. Определить k-количество различных элементов матрицы (т.е. повторяющиеся элементы считать один раз).
|