Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 12.04.2011, 00:35   #1 (permalink)
opskaka
Member
 
Регистрация: 05.12.2010
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Динамические массивы

Разработать программу выявления седловой точки в матрице размерности n*n. Матрица размещается в оперативной памяти в форме двухмерного массива динамически (значение n вводится по запросу с клавиатуры). Седловой точкой в матрице называют элемент, одновременно наибольший в своей строке и наименьший в своем столбце.Не получаются эти динамические массивы вообще.
opskaka вне форума   Ответить с цитированием

Старый 12.04.2011, 00:35
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Наверняка в этих темах есть интересующий вас ответ

Динамические структуры данных
Динамические структуры данных, Паскаль

Старый 12.04.2011, 12:58   #2 (permalink)
opskaka
Member
 
Регистрация: 05.12.2010
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

вот что получилось у меня.
но здесь не правильно.
результатов никаких не дает.
program cedlo;
uses crt;
Type
Mas = array [1..100] of integer;
MasUk = array[1..100] of ^Mas;
Var
a:^MasUk;
N,I,J,R,p,min,max,maxj,minj:integer;
z1,z2:boolean;
Begin
clrscr;
{$R-}
writeln('Vvedite razmernost kvadratnoy matricy:');
read(N);
writeln('Vvedite matricy:');
GetMem(a,SizeOf(Mas)*N);
For I:=1 to N do
begin
GetMem(a^[I],2*N);
for J:=1 to N do
read(a^[I]^[J]);
end;

for i:=1 to n do
begin
min:=a^[i]^[1];
max:=a^[i]^[1];
maxj:=1;
minj:=1;
for j:=2 to n do
begin
if a^[i]^[j] < min then
begin
min:=a^[i]^[j];
minj:=j;
end;
if a^[i]^[j] >max then
begin
max:=a^[i]^[j];
maxj:=j;
end;
end;
z1:=true;
z2:=true;

for p:=1 to n do
begin
if min<a^[p]^[minj] then
z1:=false;
if max>a^[p]^[maxj] then
z2:=false;
end;
if z1 then
writeln('tochka', a^[i]^[minj],'i=',i,'j',minj);
if z2 then
writeln('tochka', a^[i]^[maxj],'i=',i,'j',maxj);
end;
freemem(a,sizeof(mas)*n);
readln;
{$r+}


end.
opskaka вне форума   Ответить с цитированием
Старый 12.04.2011, 22:27   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну вроде сочинил. И даже работает. Кошмар!
Код:
{$r-}
TYPE
 T=ARRAY[1..1] of Integer;

VAR
 A,Min_Col,Max_Line:^T;
 Max,Min:^Integer;
 i,j,N:Integer;
 b:Boolean;

BEGIN
 Write('N= ');
 ReadLn(N);
 GetMem(A, SizeOf(Integer)*N*N);
 GetMem(Min_Col, SizeOf(Integer)*N);
 GetMem(Max_Line, SizeOf(Integer)*N);

 WriteLn('Matrix A:');
 For i:=1 to N do
  begin
   For j:=1 to N do
    begin
     Write('A[',i:2,',',j:2,']= ');
     ReadLn(A^[N*(i-1)+j]);
    end;
   WriteLn;
  end;
 WriteLn;
 For i:=1 to N do
  begin
   For j:=1 to N do
    Write(A^[N*(i-1)+j]:4);
   WriteLn;
  end;
 WriteLn;

 For i:=1 to N do
  begin
   New(Max);
   Max^:=A^[N*(i-1)+1];
   Max_Line^[i]:=1;
   For j:=2 to N do
    If A^[N*(i-1)+j]>Max^ then
     begin
      Max_Line^[i]:=j;
      Max^:=A^[N*(i-1)+j];
     end;
   Dispose(Max);
  end;

 For j:=1 to N do
  begin
   New(Min);
   Min^:=A^[j];
   Min_Col^[j]:=1;
   For i:=2 to N do
    If A^[N*(i-1)+j]<Min^ then
     begin
      Min_Col^[j]:=i;
      Min^:=A^[N*(i-1)+j];
     end;
   Dispose(Min);
  end;

 b:=true;
 For i:=1 to N do
  If Min_Col^[Max_Line^[i]]=i then
   begin
    WriteLn('Saddle point: line N ',i,'; column N ',Max_Line^[i]);
    b:=false;
   end;
 If b then WriteLn('Matrix has no saddle point');

 FreeMem(A, SizeOf(Integer)*N*N);
 FreeMem(Min_Col, SizeOf(Integer)*N);
 FreeMem(Max_Line, SizeOf(Integer)*N);

 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 00:18.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.