Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 05.09.2007, 22:37   #1
Miha
Нуждающийся
 
Регистрация: 07.04.2007
Сообщений: 50
Написано 5 полезных сообщений
(для 30 пользователей)
Вопрос GRay[s]

GRay[s] так называется мой проект, и пока всё идёт в мат. прогрессии.
Но возникают иногда проблемы.
Проблема такая:
Мне надо отсортировать поля в нутри типа по убыванию.
Вот где то здесь нашел код (пример), но ничё непонял.

;================================================= ========
MinStr$ = ""
MinInt% = -(2^31) ; This is $80000000
MinFlt# = -2 * ( 2^127 - 2^103 ) ; Could also use -(2^12 = -Infinity.

; Example uses integers. If this changes then change temp to match.

Type Item
Field Index% ; integer for this example
End Type

t.Item = New Item
t\Index = MinInt ; sentinel, the smallest integer

For n = 1 To 15
t = New Item
t\Index = Rand(9)
Next ; the actual data

ShowData
InsertionSortSentinel
ShowData

Function InsertionSortSentinel()
Local sItem.Item, NextItem.Item, p.Item
Local temp% ; must be same type as the sort field.

NextItem=After First Item
Repeat
If NextItem = Null Then Return
sItem = NextItem
NextItem=After NextItem

temp=Item\Index
p = Before Item

While temp < p\Index
p = Before p
Wend
Insert Item After p
Forever
End Function
Function ShowData( )
For a.Item = Each Item
Write a\Index+" "
Next
Print : Print
End Function
;================================================= ========
Дело в том что функция сортирует не так как мне надо, а наоборот, по возрастанию.
Пожалуйста обьясните мне как это работает, и если можно подскажите что сделать (ну это так, если недоганю )
(Offline)
 
Ответить с цитированием
Старый 06.09.2007, 00:03   #2
jimon
 
Сообщений: n/a
Re: GRay[s]

по идее заменить While temp < p\Index на While temp > p\Index
MinInt% = -(2^31) на MinInt% = +(2^31)
MinFlt# = -2 * ( 2^127 - 2^103 ) на MinFlt# = +2 * ( 2^127 - 2^103 )
вроде должно работать
 
Ответить с цитированием
Старый 06.09.2007, 15:55   #3
Miha
Нуждающийся
 
Регистрация: 07.04.2007
Сообщений: 50
Написано 5 полезных сообщений
(для 30 пользователей)
Re: GRay[s]

Неа, так неработает вообще. Вот скопируйте код, и проверте. Но сразу предупержду, там в функции InsertionSortSentinel обьявляется тип sItem.Item, так вот его надо без первой буквы т.е. Item.Item, или тогда везде поставить s
(Offline)
 
Ответить с цитированием
Старый 06.09.2007, 16:10   #4
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: GRay[s]

А если не p = Before p а p = After p ? Или я мимолётно прочитав ступил?
(Offline)
 
Ответить с цитированием
Старый 06.09.2007, 16:20   #5
dimanche13
Мастер
 
Регистрация: 19.03.2007
Сообщений: 1,039
Написано 153 полезных сообщений
(для 252 пользователей)
Re: GRay[s]

Бесплатный совет. Если не можешь понять как работает чужой код, то рядом с каждой строкой напиши комментарий что она делает, как закоментируешь все строки, так и поймешь как оно устроено и работает.
(Offline)
 
Ответить с цитированием
Старый 06.09.2007, 16:56   #6
Miha
Нуждающийся
 
Регистрация: 07.04.2007
Сообщений: 50
Написано 5 полезных сообщений
(для 30 пользователей)
Re: GRay[s]

dimanche13 я так уже и сделал, но что мне делать если я даже незнаю :
---------------------------------------------------
NextItem=After After First Item - как работает это
If NextItem = Null Then Return - что проверяет это
---------------------------------------------------
(Offline)
 
Ответить с цитированием
Старый 06.09.2007, 17:03   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: GRay[s]

NextItem=After After First Item - присваевает NextItem слудующий эллемент, после-после Item в списке эллементов.
If NextItem = Null Then Return - если эллемент NextItem отсутствует, выбросить из функции.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 22:01.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com