|
Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново... |
10.07.2010, 19:28
|
#1
|
Знающий
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений (для 6 пользователей)
|
Циферки числа
Привет
Помогите из числа выдрать отдельные цифры в блитце.
Я тут подумал перевести число в строку, но из строки мне показалось затруднительным вытаскивать отдельные символы, вот в паскале например так можно обращаться к ним s=string[i]. А тут нет.
И div`а нет нормального.
Вообщем так то Спасибо!
|
(Offline)
|
|
10.07.2010, 19:35
|
#2
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Циферки числа
Смотри в хелпе описание функции mid будешь удивлен.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
10.07.2010, 19:52
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Циферки числа
Я тут подумал перевести число в строку
|
эээ.. вообще-то решается взятием остатка от деления или делением - реализация зависти от конкретики задачи
Local V%[6]
Local S#=value
For i=6 To 0 Step -1
Local d#=10^(i-1)
V[i]=Floor(S/d)
S=S-V[i]*d
Next
выше пример, для разложения числа типа хххххх.х (таковы условия) - расширить не сложно.
Если же чисо прнципиально не умещается в разарядной сетке (что - не твой случай) - то да: строки.
Незначащие нули можно обрезать после, или тупо не записывать.
Строки здесь, имхо, индусский код.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
10.07.2010, 20:17
|
#4
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Ответ: Циферки числа
Хм... Можно так:
Dim cif(100)
Cls
a=1234
Print "Число: " + a
b$=a
l=Len(b$)
Dim cif(l)
For i=1 To l
Select Mid(b$,i,1)
Case "1"
cif(i)=1
Case "2"
cif(i)=2
Case "3"
cif(i)=3
Case "4"
cif(i)=4
Case "5"
cif(i)=5
Case "6"
cif(i)=6
Case "7"
cif(i)=7
Case "8"
cif(i)=8
Case "9"
cif(i)=9
Case "10"
cif(i)=10
End Select
Print "Число №" + i + " - " + cif(i)
Next
While Not KeyHit (1)
Wend
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.07.2010, 20:42
|
#5
|
Бывалый
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений (для 428 пользователей)
|
Ответ: Циферки числа
что за говнокод.
|
(Offline)
|
|
Эти 6 пользователя(ей) сказали Спасибо is.SarCasm за это полезное сообщение:
|
|
10.07.2010, 20:47
|
#6
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Ответ: Циферки числа
Сообщение от Igorian
что за говнокод.
|
Это просто пример, а не готовая ф-я. Со своей задачей справляется.
|
(Offline)
|
|
10.07.2010, 21:13
|
#7
|
Знающий
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Циферки числа
impersonalis, твой код очень пригодился!
Но вот прогаю на блитце 2 года, и встретил в коде много нового
что такое V[7] (ну я догадваюсь что массив кончено, однако почему скобки квадратные)?
И ещё зачем слово Local перед переменными?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.07.2010, 23:36
|
#8
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Циферки числа
Не знаю чем ты занимался два года, я знаком с блицем 8 месяцев и 18 дней.
Потому что блиц решил бы что это функция, если скобки были круглые. Круглые скобки юзай после объявления массива как Dim, если он объявляется как переменная - ставим квадратные скобки(та же проблема если массив в типе).
зачем слово Local перед переменными
|
Это плохое влияние Pascal, C и других нормальных языков - объявление переменных перед использованием . Приведу псевдокод в пример:
Объявляем Game
Game увеличить на 1
Если Came=15 то всем хорошо
В Basic-подобных языках нам просто объявят переменную Came, которая как видно никогда не будет равнятся 15, и ты долго будешь искать что в коде не так.
В остальных же - компилятор выдаст ошибку, что переменная Came не инициализирована и ты сможешь исправить код за 5 секунд.
Кроме того если переменные приходится каждый раз объявлять перед исполнением, то(статистика) формируется рациональное мышление и этих переменных используется в разы меньше чем при их автоматическом создании. Думаю преимущества этого метода очевидны.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.07.2010, 23:55
|
#9
|
Знающий
Регистрация: 31.08.2008
Адрес: Arrakis
Сообщений: 234
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Циферки числа
Reks888, спасибо, очень познавательно
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
11.07.2010, 00:09
|
#10
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Ответ: Циферки числа
Сообщение от Reks888
Это плохое влияние Pascal, C и других нормальных языков - объявление переменных перед использованием .
|
Мне кажется, что преимущество basic-подобных языков именно в том, что они ничего не навязывают: хочешь, объявляй, хочешь - нет. Помню, в VB6 была даже специальная директива, делающая объявление обязательным...
|
(Offline)
|
|
11.07.2010, 00:27
|
#11
|
Нуждающийся
Регистрация: 26.04.2006
Сообщений: 66
Написано 8 полезных сообщений (для 21 пользователей)
|
Ответ: Циферки числа
Сообщение от Maxim1441
Хм... Можно так:
Dim cif(100)
Cls
a=1234
Print "Число: " + a
b$=a
l=Len(b$)
Dim cif(l)
For i=1 To l
Select Mid(b$,i,1)
Case "1"
cif(i)=1
Case "2"
cif(i)=2
Case "3"
cif(i)=3
Case "4"
cif(i)=4
Case "5"
cif(i)=5
Case "6"
cif(i)=6
Case "7"
cif(i)=7
Case "8"
cif(i)=8
Case "9"
cif(i)=9
Case "10"
cif(i)=10
End Select
Print "Число №" + i + " - " + cif(i)
Next
While Not KeyHit (1)
Wend
|
не позорился бы с таким кодом, это код блондинок.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
11.07.2010, 00:32
|
#12
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Циферки числа
Код Максима кстати можно немного укоротить:
Function GetDigit$(val%,pos%)
Return Mid(val%,pos%,1)
End Function
Ну это так, для справки
|
(Offline)
|
|
11.07.2010, 01:01
|
#13
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Циферки числа
Сообщение от Reks888
Это плохое влияние Pascal, C и других нормальных языков - объявление переменных перед использованием .
|
нет-с поищи на форуме основное применение (хотя, поначалу, это может быть и влиянием "старших" языков):
У тебя может быть глобальная перменная (global Gravity, например) и локальная (local Gravity) в твоей функции. При помощи идентификатора ты это явно указываешь. По сути - манипулятор области видимости имён.
В других языках это также встречается в той, или иной реализации.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
11.07.2010, 02:33
|
#14
|
Нуждающийся
Регистрация: 09.07.2008
Сообщений: 57
Написано 11 полезных сообщений (для 26 пользователей)
|
Ответ: Циферки числа
Сообщение от Reks888
Код Максима кстати можно немного укоротить:
Function GetDigit$(val%,pos%)
Return Mid(val%,pos%,1)
End Function
|
Хм... И что это даст? Одну из цифр в числе. Но тогда сначала надо выяснить, сколько в числе цифр, потом где-то хранить все их. А если это реализовывать, то получится такое же говно, что и я написал
|
(Offline)
|
|
11.07.2010, 02:44
|
#15
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Циферки числа
Сообщение от Maxim1441
Хм... И что это даст? Одну из цифр в числе. Но тогда сначала надо выяснить, сколько в числе цифр, потом где-то хранить все их. А если это реализовывать, то получится такое же говно, что и я написал
|
это намёк, на то, что преобразование число-строка реализовано в blitz на уровне тайп-каст-а. Поэтому селектор - не нужен.
Да и в языках где не всё так радужно, спасает конструкция типа
где "..." необохдимая цифра в виде строки
ап
тююю - да у тебя и селектор перебирает цифры от 1 до 10 : цифры это от 0 до 9. Интересно как это ты конструкцией Mid(b$,i, 1) получишь "10" - двухбайтовую строку?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо impersonalis за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:31.
|