IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Перемещение минимального элемента массива, путем перестановки строк и столбцов необходимо переместитть минимальны
HUNTER77
сообщение 20.03.2011 17:15
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


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

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.



никак не могу понять как это сделать ..очень прошу помочь..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 21.03.2011 3:36
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(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;


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
HUNTER77
сообщение 21.03.2011 21:08
Сообщение #3





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


Спасибо большое!!!!!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
HUNTER77
сообщение 27.03.2011 11:34
Сообщение #4





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


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

Код

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 27.03.2011 11:47
Сообщение #5


Гость






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

Так же выводи и после... (Показать/Скрыть)
 К началу страницы 
+ Ответить 
HUNTER77
сообщение 27.03.2011 11:56
Сообщение #6





Группа: Пользователи
Сообщений: 9
Пол: Мужской

Репутация: -  0  +


спасибо!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 13:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"