Можно ли создать множества? - VB
Формулировка задачи:
Я подумал. Вот в Паскале есть множества. А чем хуже VB?
И придумал. По крайней мере можно создать числовые
множества и даже лучше чем на паскале.
Суть дела в том, что мы задаем массив. Например A(1 To 10000)
2) в этот массив мы будем помещать натуральные числа,
принадлежащие сегменту [1; 10000]
3) принцип следующий: числу N соответствует А(N).
Иными словами. Индекс элемента массива равен
самому элементу массива N = A(N) !!
4) это значит в массиве-множестве в принципе не
будет равных элементов.
5) а как быть например с отрицательными числами?
Например дано множество: (-10; 0; 20)
Сдвинется индексы для этого множества на постоянное
целое число. Например на 20 и множество расположится
по индексам 10; 20; 40
Вопросы.
А можно ли образовать множества для вещественных чисел?
А как поступить с буквами и сочетаниями букв?
Что еще можно сказать?
Настоящему программисту всегда есть что сказать,
если он настоящий программист.
Решение задачи: «Можно ли создать множества?»
textual
Листинг программы
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: Установить бит в логической шкале ::: ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Public Sub SetBit(LScale$, N&, B%) L& = Len(LScale$) '::: Если номер бита слишком велик If N& > L& * 8 Then Error 250 '::: Рассчитаем номер байта шкалы NByte& = N& / 8 If (N& - NByte& * 8) <= 0 Then NByte& = NByte& - 1 NBit% = N& - NByte& * 8 NByte& = NByte& + 1 ':::: Установка нужного бита S$ = Mid$(LScale$, NByte&, 1) i% = Asc(S$) If B% <> 0 Then i% = (i% Or 2 ^ (8 - NBit%)) Else i% = (i% And (255 - 2 ^ (8 - NBit%))) End If S$ = Chr$(i%) Mid$(LScale$, NByte&, 1) = S$ End Sub ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: Опросить бит в логической шкале ::: ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Public Sub GetBit(LScale$, N&, B%) L& = Len(LScale$) ':::: Если номер бита слишком велик If N& > L& * 8 Then Error 250 ':::: Рассчитаем номер байта шкалы NByte& = N& / 8 If (N& - NByte& * 8) <= 0 Then Decr NByte& NBit% = N& - NByte& * 8 Incr NByte& ':::: Чтение нужного бита S$ = Mid$(LScale$, NByte&, 1) i% = Asc(S$) B% = (i% And 2 ^ (8 - NBit%)) If B% <> 0 Then B% = 1 End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д