Вращать элементы массива по часовой стреле - 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.
- Код завершается без использования вложенных списков.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д