Имеется рандомный набор вещественных чисел от 0 до 1. Далее этот набор умножается на 2^32 и округляется. Нужно полученные целые слова от 1 до n преобразовать в биты 0 и 1, далее эти биты заменить на A и B (A-0, B-1) до 32х бит, т.е. если получилось BBBABBBBABBBBABABABABABABABA, сделать AAAABBBABBBBABBBBABABABABABABABA. Далее эти посследовательности бит от 1 до n соединить в одну, например если 10 целых чисел должна получиться посследовательность 320 AB, и в этой посследовательности выделять слова по примеру: AAAABBBABBBBABBBBABABABABABABABA A-новое слово, +1 в словарь AA-новое слово,+1 в словарь AB-новое слово,+1 в словарь B-новое слово,+1 в словарь BA-новое слово, +1 в словарь BB-новое слово, +1 в словарь BBA-новое слово,+1 в словарь BBB-новое слово,+1 в словарь BAB-новое слово,+1 в словарь ABA-новое слово,+1 в словарь BABA-новое слово,+1 в словарь BABAB-новое слово,+1 в словарь В словаре: 12 слов.-Это мне и надо выяснить, сколько слов в словаре! Вложенный файл с моей заготовкой, помогите пожалуйста доделать. Осуществить с помощью vb
Имеется рандомный набор вещественных чисел от 0 до 1. Далее этот набор умножается на 2^32 и округляется. Нужно полученные целые слова от 1 до n преобразовать в биты 0 и 1, далее эти биты заменить на A и B (A-0, B-1) до 32х бит, т.е. если получилось BBBABBBBABBBBABABABABABABABA, сделать AAAABBBABBBBABBBBABABABABABABABA. Далее эти посследовательности бит от 1 до n соединить в одну, например если 10 целых чисел должна получиться посследовательность 320 AB, и в этой посследовательности выделять слова по примеру: AAAABBBABBBBABBBBABABABABABABABA A-новое слово, +1 в словарь AA-новое слово,+1 в словарь AB-новое слово,+1 в словарь B-новое слово,+1 в словарь BA-новое слово, +1 в словарь BB-новое слово, +1 в словарь BBA-новое слово,+1 в словарь BBB-новое слово,+1 в словарь BAB-новое слово,+1 в словарь ABA-новое слово,+1 в словарь BABA-новое слово,+1 в словарь BABAB-новое слово,+1 в словарь В словаре: 12 слов.-Это мне и надо выяснить, сколько слов в словаре! Вложенный файл с моей заготовкой, помогите пожалуйста доделать. Осуществить с помощью vbmelanu
Почти то что надо, только нужно чтобы допустим есть 40 чисел, т.е. посследовательность 32*40=1280 бит (A и B), и из этих 1280 и выделялись слова по примеру а не из каждых отдельно 32х и в итоге писало допустим в словаре: 168 слов.
Почти то что надо, только нужно чтобы допустим есть 40 чисел, т.е. посследовательность 32*40=1280 бит (A и B), и из этих 1280 и выделялись слова по примеру а не из каждых отдельно 32х и в итоге писало допустим в словаре: 168 слов.melanu
Нужна ещё небольшая помощь с выводом слов на экран в виде столбца, с помощью MsgBox (m) выводит но в виде сообщений, а мне нужно на лист, реализация с помощью WorkSheets не получается:(:
A AA AB B BA и т.д. [vba]
Код
Function CountWords&(s$) Dim i&, j&, m$, oDict Dim a As Single Set oDict = CreateObject("Scripting.Dictionary") For i = 1 To Len(s) For j = 1 To Len(s) - i + 1 m = Mid$(s$, i, j) If Not oDict.Exists(m) Then oDict.Item(m) = m: Exit For Next j Worksheets(3).Cells(a, 4) = m a = a + 1 i = i + j - 1 Next i CountWords = oDict.Count End Function
[/vba]
[admin]Для оформления кода используйте соответствующие теги![/admin]
Нужна ещё небольшая помощь с выводом слов на экран в виде столбца, с помощью MsgBox (m) выводит но в виде сообщений, а мне нужно на лист, реализация с помощью WorkSheets не получается:(:
A AA AB B BA и т.д. [vba]
Код
Function CountWords&(s$) Dim i&, j&, m$, oDict Dim a As Single Set oDict = CreateObject("Scripting.Dictionary") For i = 1 To Len(s) For j = 1 To Len(s) - i + 1 m = Mid$(s$, i, j) If Not oDict.Exists(m) Then oDict.Item(m) = m: Exit For Next j Worksheets(3).Cells(a, 4) = m a = a + 1 i = i + j - 1 Next i CountWords = oDict.Count End Function
[/vba]
[admin]Для оформления кода используйте соответствующие теги![/admin]melanu
Возникла проблема: функция =Lng2AB32(*) неадекватно работает с 32 битными целыми большими числами, видимо из-за ограничености типа данных long. Можно как-то реализовать эту функцию чтобы она работала с unsigned long, в которых напорядок больше диапазон? Должны обрабатываться приблезительно такие числа: 4294967295
Возникла проблема: функция =Lng2AB32(*) неадекватно работает с 32 битными целыми большими числами, видимо из-за ограничености типа данных long. Можно как-то реализовать эту функцию чтобы она работала с unsigned long, в которых напорядок больше диапазон? Должны обрабатываться приблезительно такие числа: 4294967295melanu
Тип данных Long cодержит 64-разрядные (8-байтные) знаковые целые числа в диапазоне от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 (9.2...E+18)
Тип данных Long cодержит 64-разрядные (8-байтные) знаковые целые числа в диапазоне от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807 (9.2...E+18)Serge_007
это вы наверное про unsigned long, потому-что везде пишут что Long использует диапазон целых чисел от -2147483648 до 2147483647. Если 8 байт то непойму почему при вводе числа 4294967295 выдаётся ошибка(
это вы наверное про unsigned long, потому-что везде пишут что Long использует диапазон целых чисел от -2147483648 до 2147483647. Если 8 байт то непойму почему при вводе числа 4294967295 выдаётся ошибка(melanu
n&- long. Т.е. с этим ничего не поделать? Просто преподаватель написал вот это: функция =Lng2AB32(*) неадекватно работает с 32 битными целыми беззнаковыми числами. Если внимательно посмотрите, старший бит в текстовом представлении никогда не равен "B". Если увеличивать число в ячейках столбца то выдается ошибка(
n&- long. Т.е. с этим ничего не поделать? Просто преподаватель написал вот это: функция =Lng2AB32(*) неадекватно работает с 32 битными целыми беззнаковыми числами. Если внимательно посмотрите, старший бит в текстовом представлении никогда не равен "B". Если увеличивать число в ячейках столбца то выдается ошибка(melanu