Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Массивы и матрицы.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
345 Кб
Скачать
☆

Транспонирование матрицы относительно главной и побочной диагоналей

(заполнение матрицы осуществляется посредством генератора случайных чисел): а) главная диагональ:

 {транспонирование матрицы относительно главной диагонали}

 uses crt;

 const n=100;

 var mas: array[1..n,1..n] of integer;

     i,j,l: byte;  prom: integer;

 begin

 

  randomize;   {процедура инициализации генератора случайных чисел}

  clrscr;

 

  write('введите размер матрицы: ');   {ввод размеров матрицы}

  readln(l);

  writeln;

 

  writeln('исходная матрица: ');    {вывод исходной матрицы на экран}

  for i:=1 to l do

   begin

    for j:=1 to l do

     begin

      mas[i,j]:=random(19);

      mas[i,j]:=mas[i,j]-9;

      write(mas[i,j]:3);

     end;

    writeln;

   end;

  writeln;

 

  for i:=2 to l do   {сам процесс транспонирования}

   for j:=1 to i-1 do

    begin

     prom:=mas[i,j];

     mas[i,j]:=mas[j,i];

     mas[j,i]:=prom;

    end;

 

  writeln('результат транспонирования: ');    {вывод матрицы после преобразований}

  for i:=1 to l do

   begin

    for j:=1 to l do

     write(mas[i,j]:3);

    writeln;

   end;

 

 end.

б) побочная диагональ:

 {транспонирование матрицы относительно побочной диагонали}

 uses crt;

 const n=100;

 var mas: array[1..n,1..n] of integer;

     i,j,l: byte; prom: integer;

 begin

 

  randomize;   {процедура инициализации генератора случайных чисел}

  clrscr;

 

  write('введите размер матрицы: ');   {ввод размеров матрицы}

  readln(l);

  writeln;

 

  writeln('исходная матрица: ');    {вывод исходной матрицы на экран}

  for i:=1 to l do

   begin

    for j:=1 to l do

     begin

      mas[i,j]:=random(19);

      mas[i,j]:=mas[i,j]-9;

      write(mas[i,j]:3);

     end;

    writeln;

   end;

  writeln;

 

  for i:=1 to l-1 do   {сам процесс транспонирования}

   for j:=l-i downto 1 do

    begin

     prom:=mas[i,j];

     mas[i,j]:=mas[l-j+1,l-i+1];

     mas[l-j+1,l-i+1]:=prom;

    end;

 

  writeln('результат транспонирования: ');  {вывод матрицы после преобразований}

  for i:=1 to l do

   begin

    for j:=1 to l do

     write(mas[i,j]:3);

    writeln;

   end;

 

 end.

Поворот двумерного массива на 90° по часовой стрелке

var

   a,b:array[1..100,1..100] of integer;

   i,j,n,m:integer;

begin

 readln(n,m);    {êîëè÷åñòâî ñòðîê ГЁ ñòîëáГîâ ñîîòâåòñòâåГ*Г*Г®}

 for i:=1 to n do

  for j:=1 to m do

   read(a[i,j]);      {ñ÷èòûâГ*ГҐГ¬ ýëåìåГ*ГІГ»}

 writeln('ÑòГ*ðûé Г¬Г*Г±Г±ГЁГў');

 for i:=1 to n do

  begin

   for j:=1 to m do

    write(a[i,j]:4); {âûâîä ââåäåГ*Г*îãî Г¬Г*Г±Г±ГЁГўГ* Г*Г* ГЅГЄГ°Г*Г*}

   writeln;

  end;

 for j:=1 to n do

  for i:=1 to m do

   b[i,n-j+1]:=a[j,i];  {ïåðåâîðîò Г¬Г*Г±Г±ГЁГўГ* îñóùåñòâëÿåòñÿ ïðè ïîìîùè äðóãîãî Г¬Г*Г±Г±ГЁГўГ*}

 writeln('ÍîâГ*Гї Г°Г*çìåðГ*îñòü');

 writeln(m,' ',n);  {âûâîäèì Г*îâûå Г°Г*çìåðû}

 writeln('Íîâûé Г¬Г*Г±Г±ГЁГў');

 for i:=1 to m do

  begin

   for j:=1 to n do

    write(b[i,j]:4);   {âûâîäèì Г*îâûé Г¬Г*Г±Г±ГЁГў}

   writeln;

  end;

 readln

end.