Помощь - Поиск - Пользователи - Календарь
Полная версия: Двумерные массивы.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
worp
Помогите решить три задачки пожалуйста.

Первая:
Задана матрица А размерностью 3х6. Сделать поворот относительно главной диагонали.

Вторая:
Задана матрица А размерностью 15х10. Найти рядок с наименьшим элементом и поменять его местами с последним.

Третья:
Задана матрица А размерностью 7х5 та матрица В размерностью 7х4. Сделать добавление А+В, результат записать в матрицу С.

Спасибо за внимание.
[Прошу прощение, если тема не в том разделе. По возможности прошу перенести данную тему в нужный раздел]
worp
Пытаясь решить третью задачу, я был подвержен критике специалистов, которые в итоге помогли мне сделать эту задачку.

Выложу решение, возможно, кому-то понадобится.

Задача №3. Программный код.
Код
Uses Crt;

var
a : array[1..7,1..5] of integer;
b : array[1..7,1..4] of integer;
c : array[1..7,1..9] of integer;
i,j : integer;


begin
  randomize();

{ a, b initialization }
  for i := 1 to 7 do
  begin
    for j := 1 to 5 do
      a[i,j] := random(100);
    for j := 1 to 4 do
      b[i,j] := random(100);
  end;

{ copying }
  for i := 1 to 7 do
  begin
    for j := 1 to 5 do
      c[i,j] := a[i,j];
    for j := 1 to 4 do
      c[i,j+5] := b[i,j];
  end;

{ printing }
  for i := 1 to 7 do
  begin
    for j := 1 to 9 do
    begin
      write( c[i,j] );
      write( ' ' );
    end;
    writeln('');
  end;
end.


Тема еще актуальна. Помогите с первой и второй задачей, пожалуйста.
Lapp
В первой - неясно, что есть главная диагональ в неквадратной матрице. И что значит поворот относитлеьно нее (даже и в квадратной).

Вторая (надеюсь, что рядок это строка..)
type
  tRow= array[1..10] of ...

var
  a: array[1..15] of tRow;
  b: tRow;
...
  imin:= 1;
  jmin:= 1;
  for i:=1 to 15 do
    for j:=1 to 10 do
      if a[i,j]<a[imin,jmin] then begin
        imin:= i;
        jmin:= j
      end;
  b:= a[i];
  a[i]:= a[15];
  a[15]:= b;
...
worp
В первой задаче нужно сделать транспонирование матрицы.

Спасибо за помощь. Вот что получилось:
Задача №2.

const
  n=15;
  m=10;
type
  matr=array[1..n,1..m] of integer;
var
  a:matr;
  i,j,imin,jmin,i_point,buf:integer;
begin
  randomize;
  {Vyvod}
  writeln('Ishodnaya matritsa:');
  for i:=1 to n do
    for j:=1 to m do
      begin
        a[i,j]:=random(100)+5;
        write(a[i,j]:4);
        if j=m then
          writeln;
      end;
  writeln;
  {Poisk min, stroki min}
  imin:=1;jmin:=1;
  for i:=1 to n do
    for j:=1 to m do
      begin
        if a[i,j]<a[imin,jmin] then
          begin
            imin:=i;
            jmin:=j;
            i_point:=i;
          end;
      end;
  writeln('Min:',a[imin,jmin],' ego stroka: ',i_point,' Press enter...');
  readln;
  if i_point=n then{nomer stroki s min posledniy}
    writeln('Element nahoditsa v poslednei stroke. Nichego ne menyaem.')
  else
    begin
    {Obmen}
    for j:=1 to m do
      begin
        buf:=a[i_point,j];
        a[i_point,j]:=a[n,j];
        a[n,j]:=buf;
      end;
    {Vyvod}
    writeln('Posle obmena:');
    for i:=1 to n do
      for j:=1 to m do
        begin
          write(a[i,j]:4);
          if j=m then
            writeln;
        end;
    writeln;
  end;
end.


Осталась первая задача. Помогите пж.
worp
Первая задача с измененным условием: Не 3х6, а 6х6.
№1
uses crt;
const n=6;m=6;
var
a:array[1..n,1..m] of integer;
b:array[1..n,1..m] of integer;
i,j:integer;
begin
clrscr;
 
{Vyvod nachal`nogo massiva}
for i:=1 to n do begin
    for j:=1 to m do begin
    a[i,j]:=random(100);
    write(a[i,j]:4);
    end;
writeln;
end;
writeln;
{Zapolnenie novogo massiva z povorotom}
for i:=1 to n do begin
    for j:=1 to m do begin
    b[j,i]:=a[i,j];
    end;
end;
{Pechat` poluchivshegosya massiva}
for i:=1 to n do begin
    for j:=1 to m do begin
    write(b[i,j]:4);
    end;
writeln;
end;
 
readln;
end.


Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.