Показать сообщение отдельно

  #1176  
Старый 17.03.2009, 02:05
Nastroenie
Новичок
Регистрация: 30.01.2009
Сообщений: 4
Провел на форуме:
90637

Репутация: 0
По умолчанию

Матрица A(n,m) содержит вещественные числа. Определить количество столбцов и их номера, в которых сумма максимального и минимального элементов больше числа b.
пытался сделать эту лабу основное задание получилось, но проблема с контролем ввода данных в компоненты. вот что вышло:

unit Unit2;

interface

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

type
TForm2 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;

procedure StringGrid1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}



procedure TForm2.StringGrid1Click(Sender: TObject);
Var
i,j: integer;
begin
with StringGrid1 do
begin
i:=0;
for j:=1 to RowCount - 1 do
Cells[i,j]:= IntToStr(J);
J:=0; {строка 0}
For I:=1 to ColCount - 1 do
Cells[i,j]:= IntToStr(i);
end;
end;

procedure TForm2.Button1Click(Sender: TObject);
Var
max,min: real;
i,j,k: integer;
P: Boolean;
begin {как сделать этот момент более рационально
или после вывода ShowMessage программа не завершалась, и не закрывалась а была возможно доконца заполнить матрицу}
with StringGrid1 do
begin
for i:= 1 to RowCount-1 do
for J:=1 to ColCount-1 do
if Cells[j,i]=''
then p:=True;
if p=True
then ShowMessage('Заполните матрицу полностью!');
K:=0;
for i:= 1 to ColCount-1 do
Begin
Min:= StrToFloat(Cells[i,1]);
for j:=1 to RowCount-1 do
if StrToFloat(Cells[i,j])< min
then Min:= StrToFloat(Cells[i,j]);
Max:= StrToFloat(Cells[1,1]);
for j:=1 to RowCount - 1 do
if StrToFloat(Cells[i,j])> max
then Max:= StrToFloat(Cells[i,j]);
If Max+Min> StrToFloat(Form1.Edit3.Text)
then
Begin
k:=K+1;
Edit2.Text:=Edit2.Text + ' ' + FloatToStr(i)+ ',';
end;
end;
Edit1.Text:=FloatToStr(k);
end;
end;


procedure TForm2.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0','1','2','3','4','5','6','7','8','9','-',','])
then Key:=#0
end;

end.
 
Ответить с цитированием