Помощь - Поиск - Пользователи - Календарь
Полная версия: Двумерные массивы.
Форум «Всё о Паскале» > 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.


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