Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2010, 01:40   #1
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию Массивы

Подскажите что делает данный код??
Код:
 for k:=0 to m-1 do
      for z:=0 to n-1 do
         for i:=0 to m-1 do
          for  j:=0 to n-1  do
            if  mas[k,z] < mas[i,j] then
                begin
                buf:=mas[k,z];
                mas[k,z]:= mas[i,j];
                mas[i,j]:=buf;
                end;
вроде бы он сортирует двумерный массив по возрастанию... ??????
не могу понять принцип...(((
Asira вне форума Ответить с цитированием
Старый 15.06.2010, 01:46   #2
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Демотивирует..... о__О

Как-то меняет местами элементы массива... А почему-бы не запустить и не посмотреть что получится?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 15.06.2010, 01:54   #3
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Он сравнивает два элемента матриц и меняет их местами в порядке возрастания. Для сортировки тут еще куча проходов нужна. Но алгоритм в принцыпе верный. Виноват, не заметил, это одна матрица и на мой взгляд переменные неправильно в цикле стоят. В таком виде этот код ничего не делает. Он будет проскакивать на операторе if mas[k,z] < mas[i,j], потому, что это обращение к одному и тому же элементу, а они однозначно равны.

Последний раз редактировалось baster128; 15.06.2010 в 02:13.
baster128 вне форума Ответить с цитированием
Старый 15.06.2010, 08:08   #4
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию

Вот поидее он должен ничего не делать.......... но этот цикл сортирует массив..............даже как то странно
Asira вне форума Ответить с цитированием
Старый 15.06.2010, 10:51   #5
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

Если написать

Код:
for i:=k to m-1 do
          for  j:=z to n-1  do
то это будет самый что ни на есть классический алгоритм сортировки. Поскольку в исходном коде for i:=0 и for j:=0, то алгоритм совершит ряд "лишних" проходов с тем самым "проскакиванием" на if.

Принцип простой - сравнивается mas[0,0] и mas[0,1], если второе больше, их меняют местами. Затем "текущий" mas[0,0] и mas[0,2], если второй больше- меняют местами. В итоге после сравнения mas[0,0] с mas[m-1,n-1] переходят к сравнению mas[0,1] со всеми остальными элементами массива. Получаем масссив, отсортированный по убыванию, а не по возрастанию.
Snejnaya вне форума Ответить с цитированием
Старый 15.06.2010, 11:00   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но этот цикл сортирует массив
Не массив, а матрицы.
В первой матрице получается первая часть с большими числами а во второй матрице вторая часть с маленькими значениями.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.06.2010, 11:03   #7
Snejnaya
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 219
По умолчанию

Stilet
не соглашусь - тут всего один двумерный массив (или матрица, как больше нравится). Откуда взялось 2 матрицы?
Snejnaya вне форума Ответить с цитированием
Старый 18.06.2010, 07:57   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Snejnaya
Пардонте, я неверно выразился - две части матрицы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические массивы и массивы варианты N@stya Помощь студентам 0 11.06.2010 21:09
С++, Массивы, динамические массивы. -Sunshine- Помощь студентам 1 19.04.2010 02:17
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
[С++] Массивы djpopov20 Помощь студентам 4 20.10.2009 12:03