Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2011, 10:11   #1
strannik23
Пользователь
 
Регистрация: 11.02.2011
Сообщений: 12
По умолчанию StringGrid

Помогите исправить ошибку,
Такое задание:
Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером m.
Такой код:
unit U_F_1;

interface

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

type
TF_1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
E_3: TEdit;
L_3: TLabel;
L_com_3: TLabel;
L_4: TLabel;
B_2: TButton;
procedure Button1Click(Sender: TObject);
procedure B_2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
F_1: TF_1;
const n=6;
var
m:array[1..n,1..n]of integer;
i,j,index,k,max,buf:integer;

implementation

{$R *.dfm}


procedure TF_1.Button1Click(Sender: TObject);
{const n=6;
var
m:array[1..n,1..n]of integer;
i,j,index,k,max,buf:integer; }
begin

randomize;

for i:=1 to n do
begin

for j:=1 to n do

begin
m[i,j]:=random(10);
StringGrid1.Cells[i-1,j-1] := FloatToStrF(m[i,j], ffFixed, 2, 0);

end;


end;
max:=m[1,1];
index:=1;
for i:=1 to n do
if m[i,i]>max then
begin
max:=m[i,i];
index:=i;

end;
L_com_3.Caption:='Максимальный элемент'+#13+IntToStr(max);
L_4.Caption:='Строка'+#13+IntToStr( index);

end;

procedure TF_1.B_2Click(Sender: TObject);
{const n=6;
var
m:array[1..n,1..n]of integer;
i,j,index,k,max,buf:integer; }
begin

max:=m[1,1];
index:=1;
for i:=1 to n do
if m[i,i]>max then
begin
max:=m[i,i];
index:=i;
end;
repeat
k:=StrToInt(E_3.Text);
until k in [1..n];
if index<>k then
for i:=1 to n do
begin
buf:=m[index,i];
m[index,i]:=m[k,i];
m[k,i]:=buf;

end;
for i:=1 to n do
begin
for j:=1 to n do
StringGrid1.Cells[i-1,j-1] := inttostr(m[j,i]);
//StringGrid1.Cells[i-1,j-1] := FloatToStrF(m[i,j], ffFixed, 2, 0);
end;
end;

end.

На форме есть StringGrid, Button1(заполняет рандомайзом стрингрид), E_3(Edit) в который вводим номер строки перестановки, и ещё клавиша B_2(котороая заменяет), но проблема в том что заменяет как то криво
strannik23 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid ВасяСВВ C++ Builder 4 31.03.2011 23:25
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
StringGrid zmey31313 Помощь студентам 1 28.03.2010 15:18
StringGrid[..]..... zotox Помощь студентам 3 24.07.2009 10:49
БД и StringGrid artemavd БД в Delphi 1 24.08.2008 10:36