Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
rulevoi123
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 9
1

Передвинуть элементы, расположенные на периметре матрицы, на одну позицию по ходу часовой стрелки

02.12.2015, 10:54. Просмотров 866. Ответов 6
Метки нет (Все метки)

Дан массив A(M,N),автоматически заполненный по заранее определенному закону. Передвинуть элементы, расположенные на его периметре на одну позицию по ходу часовой стрелки. Массив в исходном и преобразованном состоянии вывести на экран.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2015, 10:54
Ответы с готовыми решениями:

Передвинуть элементы массива по периметру на одну позицию против часовой стрелки
Дан массив A(M,N),автоматически заполненный по заранее определенному закону....

Смещение значений в dataGridview на одну позицию против часовой стрелки
Задали задачу : Создать таблицу со случайным количеством столбцов и строк (от 5...

Осуществить циклический сдвиг на одну позицию по часовой стрелке внешних элементов матрицы
Дана целочисленная прямоугольная матрица размера m×n, заполненная случайными...

программа" аналог часов, только стрелки нужно вращать с помощью клавиатуры. Одну по часовой, другую против часовой.
нужно сделать окружность с делением, как часы. И внутри две стрелки. которые...

Поменять элементы матрицы в направлении против часовой стрелки
всем здраствуйте, мне надо составить программу чтобы меняла элементы матрицы в...

6
Puporev
Модератор
54678 / 42099 / 29069
Регистрация: 18.05.2008
Сообщений: 99,350
02.12.2015, 13:04 2
Лучший ответ Сообщение было отмечено rulevoi123 как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
var
  Form1: TForm1; 
  m,n:byte;
  a:array of array of byte;
implementation
 
{$R *.lfm}
 
{ TForm1 }
//создание матрицы
procedure TForm1.Button1Click(Sender: TObject);
var i,j:byte;
begin
  val(Edit1.Text,m,i);
  if(i<>0)or(m<2)then
   begin
     showmessage('Введите количество строк целое число >1');
     Edit1.Clear;
     Edit1.Setfocus;
     exit;
   end;
  val(Edit2.Text,n,i);
  if(i<>0)or(n<2)then
   begin
     showmessage('Введите количество столбцов целое число >1');
     Edit1.Clear;
     Edit1.Setfocus;
     exit;
   end;
  Stringgrid1.ColCount:=n;
  Stringgrid1.RowCount:=m;
  Stringgrid2.ColCount:=n;
  Stringgrid2.RowCount:=m;
  Setlength(a,m,n);
  for i:=0 to m-1 do
  for j:=0 to n-1 do
  a[i,j]:=n*i+j+1;
  for i:=0 to m-1 do
  for j:=0 to n-1 do
  Stringgrid1.Cells[j,i]:=Inttostr(a[i,j]);
end;
//сдвиг периметра
procedure TForm1.Button2Click(Sender: TObject);
 var i,j,x:byte;
begin
  x:=a[0,0];
  for i:=0 to m-2 do a[i,0]:=a[i+1,0];
  for j:=0 to n-2 do a[m-1,j]:=a[m-1,j+1];
  for i:=m-1 downto 1 do a[i,n-1]:=a[i-1,n-1];
  for j:=n-1 downto 2 do a[0,j]:=a[0,j-1];
  a[0,1]:=x;
  for i:=0 to m-1 do
  for j:=0 to n-1 do
  Stringgrid2.Cells[j,i]:=Inttostr(a[i,j]);
end;
1
Вложения
Тип файла: rar Сдвиг периметра.rar (124.4 Кб, 3 просмотров)
rulevoi123
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 9
02.12.2015, 18:59  [ТС] 3
Спасибо большое все работает прекрасно. Не подскажите как ввести массив с кнопки по определенному закону. А чтобы против часовой стрелки вращение сделать что нужно поменять?
0
Puporev
Модератор
54678 / 42099 / 29069
Регистрация: 18.05.2008
Сообщений: 99,350
02.12.2015, 19:24 4
Лучший ответ Сообщение было отмечено rulevoi123 как решение

Решение

Цитата Сообщение от rulevoi123 Посмотреть сообщение
как ввести массив с кнопки по определенному закону.
У меня тоже по закону
a[i,j]:=n*i+j+1;
и как ни странно по кнопке...
В другую сторону все наоборот.
1
rulevoi123
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 9
02.12.2015, 19:29  [ТС] 5
Ну да, че то туплю, пока не особо разбираюсь. Спасибо.
0
Puporev
Модератор
54678 / 42099 / 29069
Регистрация: 18.05.2008
Сообщений: 99,350
02.12.2015, 19:33 6
Вот так
Pascal
1
2
3
4
5
6
7
8
9
10
11
begin
  x:=a[0,0];
  for j:=0 to n-2 do a[0,j]:=a[0,j+1];
  for i:=0 to m-2 do a[i,n-1]:=a[i+1,n-1];
  for j:=m-1 downto 1 do a[m-1,j]:=a[m-1,j-1];
  for i:=m-1 downto 2 do a[i,0]:=a[i-1,0];
  a[1,0]:=x;
  for i:=0 to m-1 do
  for j:=0 to n-1 do
  Stringgrid2.Cells[j,i]:=Inttostr(a[i,j]);
end;
0
rulevoi123
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 9
02.12.2015, 19:41  [ТС] 7
Спасибо. Если еще что-то добавить нужно будет,можно к Вам обратиться?
0
02.12.2015, 19:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2015, 19:41

Как повернуть элементы матрицы на 90 градусов против часовой стрелки?
ЗАДАНИЕ: Дана матрица. Повернуть все её элементы вокруг центра на 90 градусов...

Перемещаясь против часовой стрелки, вывести все элементы матрицы по спирали
Matrix16. Дана квадратная матрица A порядка M (M — нечетное число). Начиная с...

Необходимо повернуть все элементы матрицы, кроме диагональных, против часовой стрелки на 90 градусов
Здравствуйте! Необходимо повернуть все элементы матрицы, кроме диагональных,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru