Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Перемещение минимального элемента массива

Автор: HUNTER77 20.03.2011 21:15

путем перестановки строк и столбцов необходимо переместитть минимальный элемент в правый нижний угол

uses crt;
const
n=6;
m=4;
type matrix =array [1..n , 1..m] of integer;
var
a:matrix;
i,j,min:integer;
begin
for i:=1 to n do
for j:=1 to m do begin
a[i,j]:=random(100); end;
min:=a[1,1];
For i:=1 to n do begin
For j:=1 to m do begin
If min> a[i,j] then
min:=a[i,j]; end; end;
textcolor(green);
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j], ' ');
writeln;
end;
writeln; textcolor (red);
writeln('минимальный элемент: ',min);
end.



никак не могу понять как это сделать ..очень прошу помочь..

Автор: Lapp 21.03.2011 7:36

Цитата(HUNTER77 @ 20.03.2011 17:15) *
путем перестановки строк и столбцов необходимо переместитть минимальный элемент в правый нижний угол
...
никак не могу понять как это сделать ..очень прошу помочь..

При поиске минимума запоминай не значение, а индексы.
Вот так примерно (не самый эффекливный способ).
{ищем минимум}
imin:=1;
jmin:=1;
For i:=1 to n do
For j:=1 to m do
If a[i,j] < a[imin,jmin] then begin
imin:= i;
jmin:= j
end;

{переставляем столбцы}
for i:=1 to n do begin
b:= a[i,m];
a[i,m]:= a[i,jmin];
a[i,jmin]:= b
end;

{переставляем строки}
for j:=1 to m do begin
b:= a[n,j];
a[n,j]:= a[imin,j];
a[imin,j]:= b
end;

Автор: HUNTER77 22.03.2011 1:08

Спасибо большое!!!!!!!!!

Автор: HUNTER77 27.03.2011 15:34

как вывести на печать функцию..?
мне помогли с решением задачи...я немогу вывести на печать конечный результат
необходимо удалить столбец с максимальным элементом..
далее нечетные отрицательные элементы первой строки матрицы расположить по убыванию.

Код

uses crt;
var a:array[1..20,1..20]of integer;
    n,m,i,j,max,jmax,pv,t:integer;
   function Check (i : integer) : boolean;
begin
   Check := (a[1, i] < 0) and odd (abs (a[1, i]));
end;
function prev (i : integer) : integer;
begin
  while (i > 0) and not Check (i) do dec (i);
  prev := i;
end;
begin

clrscr;
randomize;
write('n=');readln(n);
write('m=');readln(m);
writeln('Ishodnaia matrica:');
for i:=1 to n do
   begin
     for j:=1 to m do
        begin
          a[i,j]:=random(20)-100;
          write(a[i,j]:4);
        end;
     writeln;
   end;
readln;
max:=a[1,1];jmax:=1;
for i:=1 to n do
for j:=1 to m do
if a[i,j]>max then
    begin
      max:=a[i,j];
      jmax:=j;
    end;
writeln('max element=',max,' v stlbce ',jmax);
writeln;
writeln('Rezultat:');
for j:=jmax to m-1 do
for i:=1 to n do
  begin
    a[i,j]:=a[i,j+1];
  end;
for i:=1 to n do
   begin
    for j:=1 to m-1 do
    write(a[i,j]:4);
    writeln;
  end;
readln;
  for i := 1 to m - 1 do
    for j := m - 1 downto i + 1 do
    begin
     pv := prev (pred(j)); if pv = 0 then continue;
      if Check (j) and (a[1, pv] < a[1, j]) then
      begin
        T := a[1, pv]; a[1, pv] := a[1, j]; a[1, j] := T
      end
    end;
end.

Автор: volvo 27.03.2011 15:47

Цитата
я немогу вывести на печать конечный результат
Ну, ты ж выводил матрицу ДО упорядочивания первой строки?

Так же выводи и после... (Показать/Скрыть)

Автор: HUNTER77 27.03.2011 15:56

спасибо!!