IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> перестановка максимального и минимального элемента
Bryklin
сообщение 12.06.2014 16:37
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Женский

Репутация: -  0  +


В квадратной матрице в каждой строке переставить ее максимальный и минимальный элементы.
Я начинала делать с помощью 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.


Прикрепленные файлы
Прикрепленный файл  Unit3.pas ( 1.9 килобайт ) Кол-во скачиваний: 458
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 1)
Федосеев Павел
сообщение 13.06.2014 9:54
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 298
Пол: Мужской
Реальное имя: Федосеев Павел

Репутация: -  8  +


А зачем сортировать?
Тут достаточно в каждой строке найти мин и макс элементы (их позиции) и обменять местами.

И ещё мне непонятен следующий момент - в задании говорится о квадратной матрице, а у тебя в коде 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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 30.07.2025 4:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"