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

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

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

 
 Ответить  Открыть новую тему 
> Матрицы на паскале
сообщение
Сообщение #1





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

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


В каждом столбце матрицы упорядочить по возрастанию все элементы,расположенные между минимальным и максимальным элементами этого столбца.

решите кто может... sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость







const
 nRow = 5;
 nCol = 4;

var
 a: array[1 .. nRow, 1 .. nCol] of integer;
 i, j, k, T: integer;
 min_ix, max_ix: integer;

begin
 for i := 1 to nRow do
   begin
     writeln('вводим ряд #', i);
     for j := 1 to nCol do
       begin
         write('a[', i, ', ', j, '] = ');
         readln(a[i, j]);
       end;
   end;

 for i := 1 to nCol do
   begin
     min_ix := 1; max_ix := 1;
     for j := 1 to nRow do
       begin
         if a[j, i] < a[min_ix, i] then min_ix := j;
         if a[j, i] > a[max_ix, i] then max_ix := j;
       end;
     if min_ix > max_ix then
       begin
         T := min_ix; min_ix := max_ix; max_ix := T
       end;

     for j := min_ix to max_ix do
       for k := j to max_ix do
         if a[j, i] > a[k, i] then
           begin
             T := a[j, i]; a[j, i] := a[k, i]; a[k, i] := T
           end;
   end;

 for i := 1 to nRow do
   begin
     for j := 1 to nCol do
       write(a[i, j]:4);
     writeln
   end;
 writeln('press enter');
 readln

end.


:p2:

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

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


Const
n=10;
m=10;
Type
atype=array[1..n,1..m] of integer;

var
a:atype;
i,j:integer;
min,min0,max,max0:integer;
si,sj:integer;
ssi,ssj:integer;
k,l:integer;
begin
for i:=1 to n do for j:=1 to m do read(a[i,j]); {ввод}
For j:=1 to m do
begin
 Min0:=MaxInt;
 For i:=1 to n do If a[i,j]<min0 then begin min0:=a[i,j]; si:=i; end;
 {Это был поиск минимального}
 Max0:=-maxint;
 For i:=1 to n do If a[i,j]>max0 then begin max0:=a[i,j]; ssi:=i; end;
 {это был поиск минимума}
 {тперь сортируем}
 If ssi>si then
 begin
  for i:=ssi downto si do for k:=si to i-1 do
  begin
   If a[k,j]>a[k+1,j] then begin l:=a[k,j]; a[k,l]:=a[k+1,l]; a[k+1,l]:=l; end;
  end;
 end;
end;
{все, остортировали, осталось только вывести}

end.

Я мог допустить ошибку, только если уже хочу спать ...
и вообще, Валерия, пожулуйста, не грустите, не добавляйте сегодня еще грусти в этот день... sad.gif sad.gif
Любая задача алгоритмически разрешима.
Если я и ошибся где-то (не проверял на компиляторе), то все легко исправимо..
алгоритм верный...
Думаю вы поймете как я решал... вам ее толькоосталось подправить ...
только прошу, не надо грустить sad.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Oleg_Z
:P Опоздал...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Ищущий истину
******

Группа: Пользователи
Сообщений: 4 825
Пол: Мужской
Реальное имя: Олег

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


Не может быть! :o
По дате 4 минуты мое позднее, но я когда отправил, то мое сообщение было вторым после сообщения Валерии! :o

4 минуты мессага твоя что-ли добиралась до сервака? huh.gif blink.gif

Ладно, главное, что Валерия получила решение! :yes: smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





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

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


о! мальчики спасибо :p2:

если будет еще что поможите? rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





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

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


а, у меня вопрос!!

number = 10 это для чего? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Валерия
Не обращайте внимания - это я вовремя не удалил... Эта строка не нужна...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





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

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


а еще вопрос smile.gif

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

поняли вопрос? smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Валерия
Вопрос ясен... Дело в том, что в Паскале (в отличие от других языков программирования) чтобы организовать цикл от 3 до 6 (т.е. от меньшего к большему), пользуются таким циклом: for i := 3 to 6 do ...

А от большего к меньшему - вот таким for i := 6 downto 3 do ...

Чтобы избежать использования 2-х разных циклов я и меняю местами индекс min и max элементов (не путайте, это не мин. и макс. элементы, это всего лишь их индексы, т.е. места, на которых они находятся в массиве) так, чтобы индекс минимального хранился в переменной min_ix ... Это позволяет мне обойтись одним циклом в любом случае :yes:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





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

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


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

такое возможно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Вместо

     for j := min_ix to max_ix do
      for k := j to max_ix do
        if a[j, i] > a[k, i] then
          begin
            T := a[j, i]; a[j, i] := a[k, i]; a[k, i] := T
          end;

можно поставить:

     for j := min_ix+1 to max_ix-1 do
      for k := j to max_ix-1 do
        if a[j, i] > a[k, i] then
          begin
            T := a[j, i]; a[j, i] := a[k, i]; a[k, i] := T
          end;



По-моему, так...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13





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

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


во smile.gif вот ет работает, то что нужно, сенк!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 11.01.2025 22:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name