Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 20.06.2013, 14:49   #1 (permalink)
Rival
Member
 
Регистрация: 16.02.2013
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Массив. Pascal или Java

Помогите пожалуйста решить задание.
Вводиться с консоли массив n на m. И вводится K шагов. Внешние элементы массива должны сдвигаться по часовой стрелке на эти K шагов.
Наглядно изображено на фото.
Миниатюры
20130620_184628.jpg  
Rival вне форума   Ответить с цитированием

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

Ваш топик ичень схож с некоторыми другими топиками на нашем форуме

Массив записей, Pascal
Одномерный массив, Pascal
Массив, файлы, подпрограммы. Pascal
Где ошибка? (Java)
Pascal. Динамический массив

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

Цитата:
Сообщение от Rival Посмотреть сообщение
Помогите пожалуйста решить задание.
Вводиться с консоли массив n на m. И вводится K шагов. Внешние элементы массива должны сдвигаться по часовой стрелке на эти K шагов.
Наглядно изображено на фото.
Вот... извольте. На Паскале:
Код:
Const
 N=10;
 M=8;

Type
 Matr=Array[1..N,1..M] of Byte;
 Lin=Array[1..(2*(N-1))+(2*(M-1))] of Byte;

Var
 A,B:Matr;
 V,W:Lin;
 i,j,K:Byte;

Function M_L(C:Matr):Lin;
var
 q,p,r:byte;
begin
 r:=0;
 For p:=1 to M do
  begin
   Inc(r);
   M_L[r]:=C[1,p];
  end;
 For q:=2 to N do
  begin
   Inc(r);
   M_L[r]:=C[q,M];
  end;
 For p:=M-1 downto 1 do
  begin
   Inc(r);
   M_L[r]:=C[N,p];
  end;
 For q:=N-1 downto 2 do
  begin
   Inc(r);
   M_L[r]:=C[q,1];
  end;
end;

Function L_M(C:Lin;T:Matr):Matr;
var
 q,p,r:byte;
 Y:Matr;
begin
 Y:=T;
 r:=0;
 For p:=1 to M do
  begin
   Inc(r);
   Y[1,p]:=C[r];
  end;
 For q:=2 to N do
  begin
   Inc(r);
   Y[q,M]:=C[r];
  end;
 For p:=M-1 downto 1 do
  begin
   Inc(r);
   Y[N,p]:=C[r];
  end;
 For q:=N-1 downto 2 do
  begin
   Inc(r);
   Y[q,1]:=C[r];
  end;
 L_M:=Y;
end;

Function Shift(S:Lin;D:Byte):Lin;
var
 q,p,X:Byte;
 S1:Lin;
begin
 S1:=S;
 for p:=1 to D do
  begin
   X:=S1[2*(N-1)+2*(M-1)];
   for q:=(2*(N-1))+(2*(M-1))-1 downto 1 do S1[q+1]:=S1[q];
   S1[1]:=X;
  end;
 Shift:=S1;
end;

Begin
 Randomize;
 For i:=1 to N do
  begin
   For j:=1 to M do
    begin
     A[i,j]:=Random(256);
     Write(A[i,j]:6);
    end;
   Writeln;
  end;
 Writeln;
 Write('K= ');
 Readln(K);
 V:=M_L(A);
 W:=Shift(V,K);
 B:=L_M(W,A);
 For i:=1 to N do
  begin
   For j:=1 to M do Write(B[i,j]:6);
   Writeln;
  end;
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.06.2013, 16:25   #3 (permalink)
Rival
Member
 
Регистрация: 16.02.2013
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спс большое.
Rival вне форума   Ответить с цитированием
Старый 20.06.2013, 16:28   #4 (permalink)
Rival
Member
 
Регистрация: 16.02.2013
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

На этой строке
Код:
M_L[r]:=C[1,p];
пишет: неверное количество фактических параметров.
Rival вне форума   Ответить с цитированием
Старый 20.06.2013, 17:15   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Rival Посмотреть сообщение
На этой строке
M_L[r]:=C[1,p];
пишет: неверное количество фактических параметров.
Так, ну начинаются пляски с бубном вокруг дурных трансляторов. Естественно, программа перед выкладыванием была тщательно оттестирована. Вот результат, как есть:
aa01.jpg
Хорошо, сейчас попробую одну пилюлю: может быть и поможет.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 20.06.2013, 17:20   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Вот, попробуйте так:
Код:
Const
 N=10;
 M=8;

Type
 Matr=Array[1..N,1..M] of Byte;
 Lin=Array[1..(2*(N-1))+(2*(M-1))] of Byte;

Var
 A,B:Matr;
 V,W:Lin;
 i,j,K:Byte;

Function M_L(C:Matr):Lin;
var
 q,p,r:byte;
 G:Lin;
begin
 r:=0;
 For p:=1 to M do
  begin
   Inc(r);
   G[r]:=C[1,p];
  end;
 For q:=2 to N do
  begin
   Inc(r);
   G[r]:=C[q,M];
  end;
 For p:=M-1 downto 1 do
  begin
   Inc(r);
   G[r]:=C[N,p];
  end;
 For q:=N-1 downto 2 do
  begin
   Inc(r);
   G[r]:=C[q,1];
  end;
 M_L:=G;
end;

Function L_M(C:Lin;T:Matr):Matr;
var
 q,p,r:byte;
 Y:Matr;
begin
 Y:=T;
 r:=0;
 For p:=1 to M do
  begin
   Inc(r);
   Y[1,p]:=C[r];
  end;
 For q:=2 to N do
  begin
   Inc(r);
   Y[q,M]:=C[r];
  end;
 For p:=M-1 downto 1 do
  begin
   Inc(r);
   Y[N,p]:=C[r];
  end;
 For q:=N-1 downto 2 do
  begin
   Inc(r);
   Y[q,1]:=C[r];
  end;
 L_M:=Y;
end;

Function Shift(S:Lin;D:Byte):Lin;
var
 q,p,X:Byte;
 S1:Lin;
begin
 S1:=S;
 for p:=1 to D do
  begin
   X:=S1[2*(N-1)+2*(M-1)];
   for q:=(2*(N-1))+(2*(M-1))-1 downto 1 do S1[q+1]:=S1[q];
   S1[1]:=X;
  end;
 Shift:=S1;
end;

Begin    
 Randomize;
 For i:=1 to N do
  begin
   For j:=1 to M do
    begin
     A[i,j]:=Random(256);
     Write(A[i,j]:6);
    end;
   Writeln;
  end;
 Writeln;
 Write('K= ');
 Readln(K);
 V:=M_L(A);
 W:=Shift(V,K);
 B:=L_M(W,A);
 For i:=1 to N do
  begin
   For j:=1 to M do Write(B[i,j]:6);
   Writeln;
  end;
 Readln;
End.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.06.2013, 17:25   #7 (permalink)
Rival
Member
 
Регистрация: 16.02.2013
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

Цитата:
Сообщение от Rival Посмотреть сообщение
Спс, все работает
Пркрсн! Пжлст.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

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

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




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

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