Вращать элементы массива по часовой стреле - Pascal
Формулировка задачи:
Задача: создать приложение в рамках которого реализуется перемещения элементов квадратной матрицы расположенных в последнем столбце,первой строке и на главной диагонали, по круговой схеме на k позиций.Процедуры ввода элементов матрицы, перемещения элементов должны располагаться в модуле пользователя, который подключается к проекту . Размерность матрицы k вводится функцией InputBox.
Вот что у меня есть
насколько я понял необходимо провращать некий треугольник с гипотенузой на главной диагонали и вращать элементы массива по часовой стреле сдвигай эл на к позиций
Листинг программы
- unit Unit1;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
- type
- { TForm1 }
- TForm1 = class(TForm)
- Button1: TButton;
- Button2: TButton;
- Memo1: TMemo;
- Memo2: TMemo;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- { procedure Memo2Change(Sender: TObject);}
- private
- { private declarations }
- public
- { public declarations }
- end;
- mas=array[1..100,1..100]of integer;
- var
- Form1: TForm1;
- implementation
- var a:mas;
- n,k:integer;
- procedure vvod (var a:mas;var n:integer);
- var i:integer;
- {$R *.lfm}
- { TForm1 }
- procedure TForm1.Button1Click(Sender: TObject);
- var i,j:integer;
- s,s1:string;
- begin
- n:=strtoint(inputbox('Введите размер массива','Введите число',' '));
- vvod(a,n);
- memo1.lines.add('Исходный массив');
- for i:=1 to n do
- begin
- s1:=' ';
- for j:=1 to n do
- begin
- str(a[i,j]:4,s);
- s1:=s1+s;
- end;
- memo1.lines.add(s1);
- end;
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- var
- i,j:integer;
- s,s1:string;
- begin
- {k:=strtoint(inputbox('Колличество эл','Введите число',' '));}
- vrash(a,n);
- memo2.lines.add('Исходный массив');
- for i:=1 to n do
- begin
- s1:=' ';
- for j:=1 to n do
- begin
- str(a[i,j]:4,s);
- s1:=s1+s;
- end;
- memo2.lines.add(s1);
- end;
- {procedure TForm1.Memo2Change(Sender: TObject);
- begin
- end;}
- end;
- end.
Решение задачи: «Вращать элементы массива по часовой стреле»
textual
Листинг программы
- procedure Sdvig(var a:matr;n,k:integer);
- var i,j,x:integer;
- begin
- for i:=1 to k do
- begin
- x:=a[1,1];
- for j:=1 to n-1 do a[1,j]:=a[1,j+1];
- for j:=1 to n-1 do a[j,n]:=a[j+1,n];
- for j:=n downto 2 do a[j,j]:=a[j-1,j-1];
- a[2,2]:=x;
- end;
- end;
Объяснение кода листинга программы
- В процедуре Sdvig объявлены три переменные: a (матрица), n (размер матрицы по первому измерению) и k (размер матрицы по второму измерению).
- В цикле for i:=1 до k выполняется цикл, который обращается к первому элементу матрицы a[1,1] и заменяет его на значение x.
- Затем происходит внутренний цикл for j:=1 до n-1, который перебирает все элементы матрицы a[1,j] и заменяет их на a[1,j+1].
- После этого происходит внешний цикл for j:=n downto 2, который перебирает все элементы матрицы a[j,j] и заменяет их на a[j-1,j-1].
- Наконец, в a[2,2] присваивается значение x.
- Код завершается без использования вложенных списков.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д