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

ИПР 1 Вар.12

.pas
Скачиваний:
5
Добавлен:
01.04.2014
Размер:
4.16 Кб
Скачать
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure EditKeyPress(Sender: TObject; var Key: char);
procedure StringGridKeyPress(Sender: TObject; var Key: char);
private
{ Private declarations }
public
{ Public declarations }
end;

const
Nmax = 10;
Mmax = 10;

type
Mas1 = array[1..Nmax,1..Mmax] of real;
Mas2 = array[1..Nmax] of real;
var
Form1: TForm1;
A: Mas1;
Max,Min: Mas2;
N,M,i,j,MaxInd,MinInd,k: byte;

implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
N:=3; // Число столбцов в массиве
M:=3; // Число строк в массиве
Edit1.Text:=FloatToStr(N);
Edit2.Text:=FloatToStr(M);
StringGrid1.ColCount:= N+1; // Задание числа столбцов в таблице
StringGrid1.RowCount:= M+1; // Задание числа строк в таблице
for j:=1 to M do //Заполнение левого столбца
StringGrid1.Cells[0,j]:='j='+IntToStr(j);
for i:=1 to N do // Заполнение вехней строки
StringGrid1.Cells[i,0]:='i='+IntToStr(i);
end;

procedure TForm1.Button1Click(Sender: TObject); // Изменить размер таблицы
begin
N:=StrToInt(Edit1.Text);
M:=StrToInt(Edit2.Text);
StringGrid1.ColCount:= N+1; // Задание числа столбцов в таблице
StringGrid1.RowCount:= M+1; // Задание числа строк в таблице
for j:=1 to M do // Заполнение левого столбца
StringGrid1.Cells[0,j]:='j='+IntToStr(j);
for i:=1 to N do // Заполнение вехней строки
StringGrid1.Cells[i,0]:='i='+IntToStr(i);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
MaxStr,MinStr: string;
MaxEl,MinEl: real;
begin
try
for j:=1 to M do // Заполнение массива А элементами матрицы StringGrid1
for i:=1 to N do
A[i,j] := StrToFloat(StringGrid1.Cells[i,j]);
except
on ERangeError do begin ShowMessage('Выход за пределы массива. Уменьшите размер массива'); Exit; end;
on EConvertError do begin ShowMessage('В ячейке отсутствует значение, либо число введено не правильно'); Exit; end;
else begin ShowMessage('Возникла неизвестная исключительная ситуация!'); Exit; end;
end;

MaxEl:=A[1,1]; MaxInd:=1;
MinEl:=A[1,1]; MinInd:=1;

for j:=1 to M do // Поиск строки с максимальным и минимальным элементоми
for i:=1 to N do
begin
if A[i,j] >= MaxEl then begin MaxInd:=j; for k:=1 to N do Max[k]:=A[k,j]; end;
if A[i,j] <= MinEl then begin MinInd:=j; for k:=1 to N do Min[k]:=A[k,j]; end;
end;
for i:=1 to N do begin A[i,MinInd]:=Max[i]; A[i,MaxInd]:=Min[i]; end;

for j:=1 to M do // Заполнение матрицы StringGrid1 элементами массива А
for i:=1 to N do
StringGrid1.Cells[i,j]:=FloatToStr(A[i,j]);

for i:=1 to N do
begin
MaxStr:=MaxStr+'['+FloatToStr(Max[i])+']';
MinStr:=MinStr+'['+FloatToStr(Min[i])+']';
end;
Label3.Caption:='Строка с максимальным элементом №'+IntToStr(MaxInd)+': '+MaxStr+#13+
'Строка с минимальным элементом №'+IntToStr(MinInd)+': '+MinStr;
end;

procedure TForm1.EditKeyPress(Sender: TObject; var Key: char);
begin
case Key of
#8,'0'..'9': ; //Разрешенные знаки для ввода
else key := chr(0); //Запрещение других знаков
end;
end;

procedure TForm1.StringGridKeyPress(Sender: TObject; var Key: char);
begin
case Key of
#8,'0'..'9',',':; //Разрешенные знаки для ввода
#13: if StringGrid1.Col < StringGrid1.ColCount-1 // Переход в следующую ячейку по нажатию <Enter>
then StringGrid1.Col := StringGrid1.Col +1
else if StringGrid1.Row < StringGrid1.RowCount-1
then begin StringGrid1.Row := StringGrid1.Row + 1; StringGrid1.Col := 1; end;
else key := chr(0);
end;
end;

end.
Соседние файлы в предмете Основы алгоритмизации и программирования