Вращать элементы массива по часовой стреле - Pascal

Узнай цену своей работы

Формулировка задачи:

Задача: создать приложение в рамках которого реализуется перемещения элементов квадратной матрицы расположенных в последнем столбце,первой строке и на главной диагонали, по круговой схеме на k позиций.Процедуры ввода элементов матрицы, перемещения элементов должны располагаться в модуле пользователя, который подключается к проекту . Размерность матрицы k вводится функцией InputBox. Вот что у меня есть
Листинг программы
  1. unit Unit1;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
  6. type
  7. { TForm1 }
  8. TForm1 = class(TForm)
  9. Button1: TButton;
  10. Button2: TButton;
  11. Memo1: TMemo;
  12. Memo2: TMemo;
  13. procedure Button1Click(Sender: TObject);
  14. procedure Button2Click(Sender: TObject);
  15. { procedure Memo2Change(Sender: TObject);}
  16. private
  17. { private declarations }
  18. public
  19. { public declarations }
  20. end;
  21. mas=array[1..100,1..100]of integer;
  22. var
  23. Form1: TForm1;
  24. implementation
  25. var a:mas;
  26. n,k:integer;
  27. procedure vvod (var a:mas;var n:integer);
  28. var i:integer;
  29. {$R *.lfm}
  30. { TForm1 }
  31. procedure TForm1.Button1Click(Sender: TObject);
  32. var i,j:integer;
  33. s,s1:string;
  34. begin
  35. n:=strtoint(inputbox('Введите размер массива','Введите число',' '));
  36. vvod(a,n);
  37. memo1.lines.add('Исходный массив');
  38. for i:=1 to n do
  39. begin
  40. s1:=' ';
  41. for j:=1 to n do
  42. begin
  43. str(a[i,j]:4,s);
  44. s1:=s1+s;
  45. end;
  46. memo1.lines.add(s1);
  47. end;
  48. end;
  49.  
  50. procedure TForm1.Button2Click(Sender: TObject);
  51. var
  52. i,j:integer;
  53. s,s1:string;
  54. begin
  55. {k:=strtoint(inputbox('Колличество эл','Введите число',' '));}
  56. vrash(a,n);
  57. memo2.lines.add('Исходный массив');
  58. for i:=1 to n do
  59. begin
  60. s1:=' ';
  61. for j:=1 to n do
  62. begin
  63. str(a[i,j]:4,s);
  64. s1:=s1+s;
  65. end;
  66. memo2.lines.add(s1);
  67. end;
  68. {procedure TForm1.Memo2Change(Sender: TObject);
  69. begin
  70. end;}
  71. end;
  72.  
  73. end.
насколько я понял необходимо провращать некий треугольник с гипотенузой на главной диагонали и вращать элементы массива по часовой стреле сдвигай эл на к позиций

Решение задачи: «Вращать элементы массива по часовой стреле»

textual
Листинг программы
  1. procedure Sdvig(var a:matr;n,k:integer);
  2. var i,j,x:integer;
  3. begin
  4. for i:=1 to k do
  5.  begin
  6.   x:=a[1,1];
  7.   for j:=1 to n-1 do a[1,j]:=a[1,j+1];
  8.   for j:=1 to n-1 do a[j,n]:=a[j+1,n];
  9.   for j:=n downto 2 do a[j,j]:=a[j-1,j-1];
  10.   a[2,2]:=x;
  11.  end;
  12. end;

Объяснение кода листинга программы

  1. В процедуре Sdvig объявлены три переменные: a (матрица), n (размер матрицы по первому измерению) и k (размер матрицы по второму измерению).
  2. В цикле for i:=1 до k выполняется цикл, который обращается к первому элементу матрицы a[1,1] и заменяет его на значение x.
  3. Затем происходит внутренний цикл for j:=1 до n-1, который перебирает все элементы матрицы a[1,j] и заменяет их на a[1,j+1].
  4. После этого происходит внешний цикл for j:=n downto 2, который перебирает все элементы матрицы a[j,j] и заменяет их на a[j-1,j-1].
  5. Наконец, в a[2,2] присваивается значение x.
  6. Код завершается без использования вложенных списков.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы