![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Phenom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.3.2008 Репутация: нет Всего: нет |
Общее описание
Одномерный массив заполнить с использованием генератора случайных чисел. Алгоритм сортировки реализовать в отдельной процедуре (подпрограмме). Для вывода на экран элементов массива до и после сортировки использовать списки ListBox. Так же, найти наибольший и наименьший элементы массива, вывести на экран. Само задание Отсортировать массив вещественных чисел по возрастанию методом поиска экстремального. |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Вот код юнита главной формы:
На форме два ListBox и один Button. На всякий пожарный в аттаче сам проект. Написан в Delphi 2007. Это сообщение отредактировал(а) THandle - 15.3.2008, 18:17 Присоединённый файл ( Кол-во скачиваний: 46 ) ![]() |
|||
|
||||
Phenom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.3.2008 Репутация: нет Всего: нет |
При компиляции возникает ошибка
Undeclared identifier:'MainFormOnTaskbar' У меня дельфи 7 Это сообщение отредактировал(а) Phenom - 15.3.2008, 20:44 |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Phenom, так... это вот действительно несовместимость семерки и 2007. Во втрой теме уже такое наблюдаю))) Есть два варианта в твоём случае:
1. Попробуй сам создать проект, разместить компоненты, потом скопируй код с форума, затем поприсваивай компонентам нужные методы(Button1Click, Form1Create) и запускай, если что то еще пиши сюда. 2. Я ставлю Делфи 7 и делаю тебе проект ![]() |
|||
|
||||
Phenom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.3.2008 Репутация: нет Всего: нет |
Сделал вот это
Дак зачем там tmp? (строчка 56) Это сообщение отредактировал(а) Phenom - 15.3.2008, 20:56 |
|||
|
||||
THandle |
|
||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Phenom, это пузырьковая сортировка
![]() Ну давай попробую доказать что tmp там нужен ![]() Есть у нас некий массив. нам нужно поменять два его элемента местами. Вот так там реализовано:
а если убрать tmp?
Получается что мы сначала ставим на место с индексом iPos1 данные из элемента с индексом iPos2. Далее нам надо перебросить данные из элемента iPos1 в iPos2, но как? ведь в iPos1 находится теперь то же самое что и в iPos2. так что же получается? мы не поменяли местами, а просто присвоили двум элементам одно и то же значение. tmp хранит в себе промежточное значение из элемента ipos1, и после обмена первого на второе, все еще продолжает содержать предыдущие данные. После этого на позиию iPos2 встают старые данные из iPos1, содержащиеся теперь в tmp, так как в iPos1 уже лежат другие данные, а конкретно из элемнтп iPos2. Вот и происходит обмен. Надеюсь, что понятно выразился? Это сообщение отредактировал(а) THandle - 15.3.2008, 21:08 |
||||
|
|||||
Phenom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.3.2008 Репутация: нет Всего: нет |
Кстати мне нужна сортировка по метуду Поиск наименьшего (наибольшего)
Вот описание Массив условно делится на упорядоченную и неупорядоченную части. Первоначально весь массив неупорядочен. На каждом шаге алгоритма выбирается минимальный (максимальный) элемент в неупорядоченной части, он ставится на первое место в неупорядоченной части, после чего граница смещается на один элемент и цикл повторяется до тех пор, пока весь массив не станет упорядоченным. В модифицированном варианте метода выбранные элементы пересылаются в другой массив. При этом исходный массив не изменяется, но при очередном цикле выбора ищется не безусловно максимальный (минимальный) элемент, а элемент, больший (меньший) всех, но меньший (больший) элемента, выбиравшегося на предыдущем шаге. Если исходный массив разрешено изменять, то можно использовать ещё одну модификацию. После пересылки выбранного элемента в новый массив его место в старом массиве заполняется неким значением, которое заведомо никогда не будет выбираться в последствии. Пузырьки не пойдут Сори, что сразу не сказал, это имелось ввиду под методом поиска экстремального. Это сообщение отредактировал(а) Phenom - 15.3.2008, 21:16 |
|||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Phenom, никогда не слышал о такой сортировке(может слышал, но под другим нажванием), но ничего сложного в ней не вижу. Сейчас попробую написать. Результат сегодня не гарантирую, так как поздно уже, времени много.
|
|||
|
||||
Phenom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.3.2008 Репутация: нет Всего: нет |
Хорошо, буду ждать
![]() |
|||
|
||||
VICTAR |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
||||
|
||||
THandle |
|
||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Phenom, вот, держи, хотя не знаю тот это алгоритм какой надо или не тот, но по описанию вроде подходит.
Писал так долго, так как - http://forum.vingrad.ru/forum/topic-201047...y1444855/0.html
Добавлено через 56 секунд
Глючу. ![]() |
||||
|
|||||
Phenom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.3.2008 Репутация: нет Всего: нет |
Спасибо за прогу. Сверю с описанием.
|
|||
|
||||
Phenom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.3.2008 Репутация: нет Всего: нет |
THandle, Можешь вкратце алгоритм расписать с вырезками из проги?
Это сообщение отредактировал(а) Phenom - 18.3.2008, 21:18 |
|||
|
||||
THandle |
|
||||||||||||||||||||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Phenom, алгоритм реализован в процедуре
В качестве единственного параметра в процедуру передается массив(var нужен что бы его можно было изменять).
В цикле от 1 до константы MAX(объявлена ранее) делаем следующее:
pmax это у нас индекс максимального числа в массиве на проходе i. каждый раз мы ему присваиваем минимально возможное значение, то етсть i.
тут мы находим индекс максимального элемента массива на данном проходе. В переменной pmax находится этот самый индекс. Главное заметь, что в цикле мы идем не с 1, а с i, то есть как бы разделяем массив на упорядоченную часть и не упорядоченную.
ставим на место i-ного элемента в упорядоченной части максимальный элемент, который находится в pmax. а элемент с индексом i переносим на место максимального элемента. Всё. Вот небольшой тебе пример как будет сортироваться следующий массив:
Это неупорядоченный массив из 5 элементов. 1 шаг сортировки:
2 шаг сортировки:
3 шаг сортировки:
4 шаг сортировки:
получаем на выходе следующий отсортированный массив:
Это сообщение отредактировал(а) THandle - 18.3.2008, 21:35 |
||||||||||||||||||||||
|
|||||||||||||||||||||||
Phenom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 10.3.2008 Репутация: нет Всего: нет |
Можно ещё вот это пояснить. Особенно Assigned и последующее. Это сообщение отредактировал(а) Phenom - 19.3.2008, 18:27 |
|||
|
||||
THandle |
|
||||||||||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Phenom, это уже, имхо, отход в сторону от темы.
Поясню вкратце: Тебе ведь нужно все в listbox вносить? Точнее в его items, а эти items имеют как раз то тип TStrings, поэтому второй параметр этой процедуры как раз такого типа.(с первым я думаю всё понятно - это наш массив).
проверяет создано ли Strings. Если создано, то продолжаем работу, иначе выходим из процедуры. Я бы лично предпочел бы поднимать тут исключение, но я думаю тебе это не подойдет, так как не проходили скорее всего. Впринципе если ListBox ты кладешь в Design-time можно и не делать этой проверки, но всё лучше сделать. Тут мы очищаем Strings от всякого мусора(если он там конечно есть).
Тут мы все элементы нашего массива добавляем в Strings. А так кк вызываем мы эту процедуру так: В первый раз(до сортировки):
То весь массив будет добавлен в ListBox1.Items. Далее мы массив сортируем:
А теперь все элементы массива "распечатываем" в ListBox2.Items:
|
||||||||||
|
|||||||||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |