Показать сообщение отдельно
Старый 15.01.2011, 13:09   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ладно, будем считать, что совместными усилиями пришли сюда:
Код:
program kyrs;
uses crt;

type
 mas=array[1..15,1..15] of integer;
 vector=array[1..15] of integer;

var
 i,j,n:integer;
 A,B:mas;
 V,V1,V2:vector;

procedure vvod;
 begin
  repeat
   clrscr;
   write('vvedite razmernost massiva ot 5 do 15: ');
   readln(n);
  until (n>=5) and (n<=15);
  for i:=1 to n do
   for j:=1 to n do
    A[i,j]:=-100+random(201);
 end;

procedure vivod(Av:mas);
 var i1,j1:integer;
 begin
  i1:=(n div 2)+1;
  if (n mod 2)=0 then
   j1:=(n div 2)
  else
   j1:=(n div 2)+1;
  for i:=1 to n do
   begin
    for j:=1 to n do
     begin
      if (i<i1) or ((i>i1) and (j<=i-i1)) or
         ((i>=i1) and (j>j1) and (j<n-(i-i1))) then
       textcolor(13) else textcolor(14);
      write(Av[i,j]:5);
     end;
    writeln;
    textcolor(13);
   end;
  Writeln('Press "Enter" to continue...');
  ReadLn;
 end;

procedure vivod_V(Vv:vector);
 begin
  for i:=1 to n do
   write(Vv[i]:5);
  writeln;
 end;

procedure obmen(Ao:mas; var Bo:mas);
 var i1,j1:integer;
 begin
  Bo:=Ao;
  i1:=(n div 2)+1;
  if (n mod 2)=0 then
   begin
    j1:=(n div 2);
    for i:=i1 to n do
     for j:=i-i1+1 to j1 do
      begin
       Bo[j1+j,n-(i-i1)]:=Ao[i,j];
       Bo[i,j]:=Ao[j1+j,n-(i-i1)];
      end;
   end
  else
   begin
    j1:=(n div 2)+1;
    for i:=i1 to n do
     for j:=i-i1+1 to j1 do
      begin
       Bo[j1+j-1,n-(i-i1)]:=Ao[i,j];
       Bo[i,j]:=Ao[j1+j-1,n-(i-i1)];
      end;
   end;
 end;

procedure traekt;
 begin
  writeln('traektoriya:');
  V:=A[n];
  for j:=1 to n do
   write(V[j]:5);
  writeln;
  Writeln('Press "Enter" to continue...');
  ReadLn;
 end;

procedure order(Vo:vector; var Vo1:vector; var Vo2:vector);
 var d:integer;
 begin
  Vo1:=V;
  for i:=1 to n do
   for j:=1 to n-i do
    if Vo1[j]>Vo1[j+1] then
     begin
      d:=Vo1[j+1];
      Vo1[j+1]:=Vo1[j];
      Vo1[j]:=d;
     end;
  Vo2:=V;
  for i:=1 to n do
   for j:=1 to n-i do
    if Vo2[j]<Vo2[j+1] then
     begin
      d:=Vo2[j+1];
      Vo2[j+1]:=Vo2[j];
      Vo2[j]:=d;
     end;
 end;

procedure maxmin;
 var
  min,max,i1,j1:integer;
 begin
  i1:=(n div 2)+1;
  if (n mod 2)=0 then
   j1:=(n div 2)
  else
   j1:=(n div 2)+1;
  max:=A[1,1];
  min:=A[1,1];
  for i:=1 to i1-1 do
   for j:=1 to n do
    begin
     if A[i,j]>max then
      max:=A[i,j];
     if A[i,j]<min then
       min:=A[i,j];
    end;
  for i:=i1 to n-2 do
   for j:=j1+1 to n-(i-i1+1) do
    begin
     if A[i,j]>max then
      max:=A[i,j];
     if A[i,j]<min then
       min:=A[i,j];
    end;
  for i:=i1+1 to n do
   for j:=1 to i-i1 do
    begin
     if A[i,j]>max then
      max:=A[i,j];
     if A[i,j]<min then
       min:=A[i,j];
    end;
   writeln('max=',max);
   writeln('min=',min);
  end;

BEGIN
 clrscr;
 randomize;
 textbackground(9);
 textcolor(13);
 vvod;
 clrscr;
 Writeln('Ishodnaya matritsa:');
 vivod(A);
 obmen(A,B);
 Writeln('Preobrazovannaya matritsa:');
 vivod(B);
 clrscr;
 traekt;
 order(V,V1,V2);
 Writeln;
 vivod_v(V1);
 Writeln;
 vivod_v(V2);
 Writeln('Press "Enter" to continue...');
 Readln;
 Writeln;
 Maxmin;
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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