![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Bryklin |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 1 Пол: Женский Репутация: ![]() ![]() ![]() |
В квадратной матрице в каждой строке переставить ее максимальный и минимальный элементы.
Я начинала делать с помощью StringGrid. Дошла до момента сортировки и всё, дальше не знаю. unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Math;
type
TForm3 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
StringGrid1: TStringGrid;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Const
n1=50; m1=50;
min=1000;
Max=0;
var
Form3: TForm3;
n,m,i,j:integer;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
n:=4; //число строк в массиве
m:=4; //число столбцов в массиве
Edit1.Text:='';
Edit2.Text:='';
StringGrid1.Cells[0,0]:='I/J';
for i:=1 to n do StringGrid1.Cells[0,i]:='i='+IntToStr(i);
for j:=1 to m do StringGrid1.Cells[j,0]:='j='+IntToStr(j);
end;
procedure TForm3.Button2Click(Sender: TObject);
var i,j:integer;
begin
n:=StrToInt(Edit1.Text); //ввод переменной n
m:=StrToInt(Edit2.Text); //ввод переменной m
StringGrid1.RowCount:=n+1; //задание числа строк и столбцов в массиве
StringGrid1.ColCount:=m+1;
for i:=1 to n do StringGrid1.Cells[0,i]:='i='+IntToStr(i);
for j:=1 to m do StringGrid1.Cells[j,0]:='j='+IntToStr(j);
randomize;
for i:=1 to n do
for j:=1 to m do
stringgrid1.cells[i,j]:=inttostr(random (100)-50);
end;
procedure TForm3.Button3Click(Sender: TObject);
end;
end.
Прикрепленные файлы ![]() |
![]() ![]() |
Федосеев Павел |
![]()
Сообщение
#2
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 298 Пол: Мужской Реальное имя: Федосеев Павел Репутация: ![]() ![]() ![]() |
А зачем сортировать?
Тут достаточно в каждой строке найти мин и макс элементы (их позиции) и обменять местами. И ещё мне непонятен следующий момент - в задании говорится о квадратной матрице, а у тебя в коде n*m. Но это сама разберёшься. Покажу без StringGrid, чтобы был понятнее сам алгоритм:
пусть
a: array[1..n, 1..n] of integer; <--- эквивалент StringGrid
тогда
for i:=1 to n do {цикл по строкам}
begin
{в каждой строке ищем мин и макс элемент, а точнее их индексы}
Jmin:=1;
Jmax:=1;
for j:=2 to n do
begin
if a[i, j] > a[i, Jmax] then
Jmax:=j;
if a[i, j] < a[i, Jmin] then
Jmin:=j;
end;
{теперь обмениваем}
tmp:=a[i, Jmin];
a[i, Jmin]:=a[i, Jmax];
a[i, Jmax]:=tmp;
end;
Сообщение отредактировано: Федосеев Павел - 13.06.2014 10:00 |
![]() ![]() |
![]() |
Текстовая версия | 30.07.2025 4:07 |