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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2010, 17:33   #1
deathz0r
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 24
По умолчанию Поменять местами строку с минимальным и максимальным элементами

Ребят написал код, но при запуске Delphi, ворчит на TStringGrid, работаю с этим компонентом 1 раз и хотелось бы узнать, что не так. Новых алгоритмов не надо, прошу только видоизменить уже существующий код.

unit Unit1;

interface

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

type
Tmatrix=array[1..5,1..5] of integer;
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Label3: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);

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

var
Form1: TForm1;
i,j,k:integer;
Arr:Tmatrix;
N,M:integer;
min,max:integer;
indexmin,indexmax:integer;
mas:array[1..5] of integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
N:=StrToInt(Edit1.Text);
M:=Strtoint(edit2.Text);
If N>5 then
begin
Application.MessageBox('Неверное количество Столбцов', 'Ошибка',MB_OK);
N:=0;
exit;
end;
If M>5 then
begin
Application.MessageBox('Неверное количество строк ', 'Ошибка',MB_OK);
M:=0;
exit;
end;
randomize;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
A:Tmatrix;
N:integer;
M:integer;
begin
N:=StrToInt(Edit1.Text);
M:=Strtoint(edit2.Text);
for i:=1 to N do
begin
for j:=1 to M do
begin
A[i,j]:=random(25);
end;
end;
end;

procedure ExecMatrix(var A:Tmatrix; N,M:integer);
var i,j:integer;
begin
for i:=1 to N do begin
for j:=1 to M do begin
min:=0; max:=0;
indexmax:=0; indexmin:=0;
if a[i,j]>max then
begin
max:=a[i,j];
indexmax:=j;
end;
if a[i,j]<min then
begin
min:=a[i,j];
indexmin:=j;
end;
for k:=1 to M do
begin
mas[k]:=A[i,indexmax];
A[i,indexmax]:=A[i,indexmin];
A[i,indexmin]:=mas[k];
end;
end;
end;
end;

procedure OutMatrix(var A:Tmatrix; N,M:integer; SG:TstringGrid1);
var i,j:integer;
begin
for i:=1 to N do
for j:=1 to M do
SG.Cells[j-1,i-1]:=Inttostr(A[i,j]);
end;

procedure InMatrix(var A:Tmatrix; N,M:integer; SG:TstringGrid2;
var i,j:integer;
begin
for i:=1 to N do
for j:=1 to M do
if SG.Cells[j-1,i-1]='' then A[i,j]:=0 else A[i,j]:=strtoint(SG.Cells[j-1,i-1]);
end;

procedure Button3Click(Sender: TOobject);
begin
inmatrix(A,N,StringGrid1);
ExecMatrix(A,N,M);
OutMatrix(A,N,M,StringGrid2);
end;

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дано n вещественных чисел. вычислить разность между максимальным и минимальным из них lena.h Microsoft Office Excel 9 28.03.2010 15:44
Поменять местами столбец и первую строку DanteDMC3 Помощь студентам 1 12.02.2010 16:06
Разность между максимальным и минимальным значениями StudeHt Помощь студентам 7 23.04.2009 22:26
Задача на СИ в заданной матрице поменять местами первую строку и первый столбец %( defol-777 Помощь студентам 2 14.01.2009 09:59
в двухмерном массиве поменять местами столбцы с максимальным и минимальным элементами Лёха Помощь студентам 5 18.12.2007 18:12