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

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

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

> Проблема с сортировкой
Serg_2206
сообщение 4.02.2006 18:59
Сообщение #1





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

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


У меня задача есть вот такая задача: Дана квадратная матрица A(m x n), надо чтобы
отридцательные элементы столбцов, были отсортированы в самое начало эти столбцов
т.е. была вот такая матрица , а должна стать
                            1 2 3                 1 -5 -9 
4-5 6 4 2 3
7 8-9 7 8 6

У меня вот такой код, но что то он как надо не работает(не сортирует) помогите ошибку исправить.
Код
program matrix;
uses crt;
const n=2;
var
mas:array[1..n,1..n] of integer;
i,j,p,e:byte;
begin
clrscr;
for i:=1 to n do
begin
for j:=1 to n do
begin
write(i,'-я строка ',j,'-й столбец:');
readln(mas[i,j]);
end;
end;
writeln;
for p:=1 to n do begin    
   for i:=1 to n-1 do begin  
      for j:=n-1 downto i do begin
          if mas[j,p]<0 then begin
            if mas[j,p]<mas[j-1,p] then begin
                  e:=mas[j,p];
                  mas[j,p]:=mas[j-1,p];
                 mas[j-1,p]:=mas[j,p];
            end;
          end;
      end;
   end;
end;
for i:=1 to n do
  begin
   for j:=1 to n do
     write(mas[i,j],' ');
     writeln;
  end;
  readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
volvo
сообщение 4.02.2006 19:16
Сообщение #2


Гость






Var
T: Integer;
curr: byte;
...
for p := 1 to n do begin

curr := 0;
for i := 1 to n do begin
if mas[i, p] < 0 then begin

T := mas[i, p];
for j := i downto curr + 1 do
mas[j, p] := mas[j - 1, p];
inc(curr);
mas[curr, p] := T;

end;
end;
end;
 К началу страницы 
+ Ответить 
Serg_2206
сообщение 4.02.2006 22:05
Сообщение #3





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

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


Спасибо за помощь, усе работает good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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