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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2016, 19:10   #1
hozer
Новичок
Джуниор
 
Регистрация: 01.12.2016
Сообщений: 2
По умолчанию [Delphi]: Сортировка массива, состоящего из максимальных элементов заданных матриц

Помогите выполнить задание.С Delphi впервые столкнулся.
Изображения
Тип файла: jpg Скриншот 2016-11-30 21_08_53.jpg (23.8 Кб, 22 просмотров)

Последний раз редактировалось Вадим Мошев; 01.12.2016 в 21:35.
hozer вне форума Ответить с цитированием
Старый 04.12.2016, 11:25   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
type tArr=array of array of real;

function max(p:tArr):real;
var i,j:integer;
begin
   Result:=p[Low(p),Low(p[Low(p)])];
   For i:=Low(p) to High(p) do
      For j:=Low(p[i]) to High(p[i]) do
         If Result<p[i,j] then
            Result:=p[i,j];
end;

var a,b,c,d:tArr;
    x,y,z,w,m:real;
    dalee:boolean;
begin
   SetLength(a,3,3);
   a[0,0]:=0.5;
   a[0,1]:=2.8;
   a[0,2]:=-1;
   a[1,0]:=4.5;
   a[1,1]:=7.7;
   a[1,2]:=0.3;
   a[2,0]:=-1.5;
   a[2,1]:=0.5;
   a[2,2]:=3;
   x:=max(a);
   Writeln(x:5:2);
   SetLength(b,3,2);
   b[0,0]:=1.8;
   b[0,1]:=2.5;
   b[1,0]:=4.1;
   b[1,1]:=3.2;
   b[2,0]:=0.8;
   b[2,1]:=1;
   y:=max(b);
   Writeln(y:5:2);
   SetLength(c,2,3);
   c[0,0]:=0.85;
   c[0,1]:=3.1;
   c[0,2]:=2;
   c[1,0]:=2.1;
   c[1,1]:=-3.05;
   c[1,2]:=1;
   z:=max(c);
   Writeln(z:5:2);
   SetLength(d,2,2);
   d[0,0]:=0.25;
   d[0,1]:=1;
   d[1,0]:=-0.5;
   d[1,1]:=0.9;
   w:=max(d);
   Writeln(w:5:2);
   Writeln;
   Repeat
      dalee:=true;
      If x>y then
      begin
         dalee:=false;
         m:=x;
         x:=y;
         y:=m;
      end;
      If y>z then
      begin
         dalee:=false;
         m:=y;
         y:=z;
         z:=m;
      end;
      If z>w then
      begin
         dalee:=false;
         m:=z;
         z:=w;
         w:=m;
      end;
   Until dalee;
   Writeln(x:5:2);
   Writeln(y:5:2);
   Writeln(z:5:2);
   Writeln(w:5:2);
   Readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 05.12.2016, 23:32   #3
hozer
Новичок
Джуниор
 
Регистрация: 01.12.2016
Сообщений: 2
По умолчанию Другой код

Простите , но можете подсказать в чем проблема в моем коде?У меня при выводе массива выдает нули.

procedure vyvod(x:matr; Matrix_A:string; a:tlabel);
var i,j:byte;
begin
a.caption:=Matrix_A+#13;
for i:=1 to 3 do begin
for j:=1 to 3 do begin
a.caption:=a.caption+format('%5.1f' ,[x[i,j]]);
end;
a.Caption:=a.caption+#13;
end;
end;
procedure vyvod1(x:matr1; Matrix_B:string; b:TLabel);
var i,j:Byte;
begin
b.Caption:=Matrix_B+#13;
for i:=1 to 3 do begin
for j:=1 to 2 do begin
b.caption:=b.Caption+format('%5.1f' ,[x[i,j]]);

end;
b.Caption:=b.caption+#13;
end;
end;
procedure vyvod2(x:matr2; Matrix_C:string; c:Tlabel);
var i,j:byte;
begin
c.caption:=Matrix_C+#13;
for i:=1 to 2 do begin
for j:=1 to 3 do begin
c.caption:=c.caption+' '+ Format('%5.1f',[x[i,j]]);
end;
c.Caption:=c.caption+#13;
end;
end;
procedure vyvod3( x:matr3; Matrix_D:string; d:TLabel);
var i,j:Byte;
begin
d.caption:=Matrix_D+#13;
for i:=1 to 2 do begin
for j:=1 to 2 do begin
d.caption:=d.Caption+' '+format('%5.1f',[x[i,j]]);
end;
d.Caption:=d.caption+#13;
end;
end;
procedure TForm1.vvodmatrici1Click(Sender: TObject);
begin
vyvod(a,'Matrix_A',label1);
vyvod1(b,'Matrix_B',label2);
vyvod2(c,'Matrix_C',label3);
vyvod3(d,'Matrix_D',label4);
end;
{Ïîèñê ìàêñèìàëüíûõ ýëåìåíòîâ ìàòðèöû}
function max(a:matr):real; var k:real;
var i,j:Byte;
begin
k:=a[1,1];
for i:=1 to 3 do begin
for j:=1 to 3 do begin

if a[i,j]>k then k:=a[i,j];
end;
end;

h[1]:=k;
end;
function max1(b:matr1):Real;
var q:Real;
var i,j:Byte;
begin
q:=b[1,1];
for i:=1 to 3 do begin
for j:=1 to 2 do begin
if b[i,j]>q then q:=b[i,j];

end;
end;
h[2]:=q;
end;
function max2(c:matr2):Real; var o:Real;
var i,j:Byte;
begin
o:=c[1,1];
for i:=1 to 2 do begin
for j:=1 to 3 do begin
if c[i,j]>o then o:=c[i,j];
end;
end;
h[3]:=o;
end;
function max3(d:matr3):Real; var u:real;
var i,j:Byte;
begin
u:=d[1,1];
for i:=1 to 2 do begin
for j:=1 to 2 do begin
if d[i,j]>u then u:=d[i,j];
end;
end;
h[4]:=u;
end;



{ïðîöåäóðà ñîðòèðîâêè ìàññèâà}
procedure TForm1.sort1Click(Sender: TObject);

var
i,j:byte;
buf:Real;




begin
begin
for i:=1 to 4 do
for j:=1 to 4-i do
if h[j]>h[j+1] then begin
buf:=h[j];
h[j]:=h[j+1];
h[j+1]:=buf;
end;
for i:=1 to 4 do
label5.Caption:=label5.Caption+' '+floattostr(h[i]);
end;


end;

{Çàêðûòèå ôîðìû}
procedure TForm1.N1Click(Sender: TObject);

begin
close
end;



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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Матрица. Задана матрица X[N,N], где N<=15. В каждом столбце матрицы поменять местами минимальный элемент и элемент главной диагона _Marchel_ Паскаль, Turbo Pascal, PascalABC.NET 5 28.11.2015 16:23
Паскаль. Матрица NxN -> текстовый файл -> Матрица NxN - найти max по диагоналям -> типизированный файл Лунатик13 Помощь студентам 1 20.02.2012 15:54
Непонятки с DirectX (матрица поворота, камера, матрица проекции) ROD Общие вопросы C/C++ 2 17.09.2010 17:00
TurboPascal: граф, матрица смежности и матрица инцидентности. ulala Помощь студентам 0 02.12.2009 10:11