Вопрос № 39734: Здравствуйте!
Вопрос скорее не по Basic, а по программированию и информатике вообще, но поскольку операторы imp, eqv и not есть в Basic, то я решил задать вопрос именно в эту рассылку. Кто-нибудь может мне объяснить, как с помощью ручки, листка б...Вопрос № 39751: Я знаю для многих это простой вопрос: Как осуществить перенос строки в RichTextBoxе? Если можно поподробнее и пошагово. Спасибо...Вопрос № 39799: Здравствуйте!!! Я хочу написать
программу, которая будет подсчитывать количество символов, символы будут вводится через TextBox, как это сделать, можете написать пример, может есть какая-то функция или процедура подсчёта символов или что-то вроде так...
Вопрос № 39.734
Здравствуйте!
Вопрос скорее не по Basic, а по программированию и информатике вообще, но поскольку операторы imp, eqv и not есть в Basic, то я решил задать вопрос именно в эту рассылку. Кто-нибудь может мне объяснить, как с помощью ручки, листка бумаги и прямых рук (в наличии имеются) посчитать, например, такое: 15 eqv 21. Как считать выражение с использованием операторов and и or я понял, там все в соответствии с таблицами исходных и результирующего битов. К операторам not, imp и eqv такие таблицы тоже имеются, но почему-то
при выполнении на компе результат - отрицательный (15 imp 21 = -11)!!! Плиз, помогите, мне нужно посчитать что-то вроде этого: (15 And 51) Or (Not (15 Imp 51) Eqv 85), причем без компа и калькулятора!!!
P.s. Это задание B8 из Централизованного Тестирования. Может, скачаете кто-нибудь, мне очень нужна помощь по Бейсику !!! См. http://www.cttest.net.ru/inf2006.rar (300 кб).
Отправлен: 08.04.2006, 17:29
Вопрос задал: Diman_A (статус: 8-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Diman_A!
Сам я с этими операторами не сталкивался, но потренировавшись в отладчике с оператором IMP пришел к следующим выводам:
Существенное отличие между прикладной математикой и программированием - в математике числа представлены от 0 до 255 (для примера возьмем один байт, для двух байт - слова - от 0 до 65535), а в программировании и в типах данных языков программирования от -128 до +127 (для слова от -32768 до 32767). Знак указывается наличием 1 в старшем разряде (для байта это бит 7 - нумерация справа налево начиная с бит 0, а для слова - бит 15).
В общем виде математическое число 255 представляется как "1111.1111" (я разбил по 4 бита, на самом деле запись идет слитная), но когда происходит перевод двоичного числа "1111.1111" в компьютере, то это число будет равно "-1".
Правило перевода состоит в следующем: в случае, если старший бит равен "1", то число отрицательное - перед числом ставим знак "минус", затем из нуля вычитаем число без бита знака и переводим в десятичную систему.
Например число "1101.0110"
000.0000
- 101.0110
--------------
010.1010
в десятичной системе "101010" - "42", значит искомое число "-42".
Потренировавшись в VB6 с различными значениями аргументов, пришел к выводу:
1. На разрядность ответа влияет разрядность первого числа, т.е. "15"="1111" занимает 4 бита, ответ 5-и битный, причем левый бит равен "1", т.е. число отрицательное , "46"="101110" занимает 6 бит, ответ 7-ми битный.
2. В случае превышения разрядности второго аргумента над разрядностью первого, в расчете лишние левые разряды второго аргумента не учитываются.
Разберем пример "15 IMP 21".
"15" = "1111"
"21" = "10101"
В расчете берутся по 4 бита каждого числа
"1111" IMP "0101" = "0101"
Добавив бит знака получим "10101"
Определим значение отрицательного числа "10101"
0000
- 0101
= 1011, эквивалентом которого является десятичное число "11"
Итого ответ "-11"
Другой пример "46 IMP 21".
"46" = "101110"
"21" = "10101"
В расчете берутся по 6 бит каждого числа, причем "21" в виде "010101"
"101110" IMP "010101" = "010101"
Добавив бит знака получим "1010101"
Определим значение отрицательного числа "1010101"
000000
- 010101
= 101011, эквивалентом которого является десятичное число "43"
Итого ответ "-43"
Если посчитать в первом примере побитно, как в справочнике, то получим
"01111" IMP "10101" = "10101" или в десятичном "21", во втором примере ответ совпадает.
Для определения эквивалента отрицательного числа проще считать по-другому:
например необходимо найти эквивалент отрицательного числа "1011101001".
1. Значение левого разряда "1" указывает на отрицательное число.
2. Разрядность числа без признака знака - 9.
3. Из 9-ти значного числа, состоящем из единиц вычитаем число без разряда знака:
1.1111.1111
- 0.1110.1001
= 1.0001.0110
4. К полученному значению прибавляем 1
1.0001.0110 + 1 = 1.0001.0111
5. Переводим в десятичную систему.
Результат "-279" в диапазоне значений от "-512" до "511"
Ответ отправил: Филатов Евгений Геннадьевич (статус: 1-ый класс)
Ответ отправлен: 10.04.2006, 22:26 Оценка за ответ: 5
Вопрос № 39.751
Я знаю для многих это простой вопрос: Как осуществить перенос строки в RichTextBoxе? Если можно поподробнее и пошагово. Спасибо
Отправлен: 08.04.2006, 20:53
Вопрос задал: F13 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: BuTeK
Здравствуйте, F13!
Добавить к строке в месте перенса два символа: конец строки и перевод каретки.
"Строка 1" + Chr (10) + Chr (13) + "Строка 2".
Ответ отправил: BuTeK (статус: 6-ой класс)
Ответ отправлен: 09.04.2006, 00:40 Оценка за ответ: 4 Комментарий оценки: Ответ то правильный, но я имел другое виду....
Отвечает: Александр Шевченко
Здравствуйте, F13!
За автоматический перенос строк отвечает свойство Multiline, т.е. в коде можно написать:
RichTextBox1.Multiline = True
Ответ отправил: Александр Шевченко (статус: 4-ый класс)
Ответ отправлен: 13.04.2006, 17:24 Оценка за ответ: 4
Вопрос № 39.799
Здравствуйте!!! Я хочу написать программу, которая будет подсчитывать количество символов, символы будут вводится через TextBox, как это сделать, можете написать пример, может есть какая-то функция или процедура подсчёта символов или что-то вроде такого как в Паскале?
Отправлен: 09.04.2006, 14:54
Вопрос задал: ataman (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: BuTeK
Здравствуйте, ataman!
Вроде так можно
Dim intNameLength As Integer
Dim Str As String
Str = TextBox1.Text
intNameLength = Str.Length
Ответ отправил: BuTeK (статус: 6-ой класс)
Ответ отправлен: 09.04.2006, 15:22 Оценка за ответ: 5
Отвечает: Ерёмин Андрей
Здравствуйте, ataman!
Вот выдержка из одной документации:
Функция Len
Len(String | Varname)
Функция Len вычисляет число символов в строке или размер заданной переменной.Из двух возможных аргументов должен быть указан только один(и только один). Для определяемых пользователем типов Len возвращает размер, который требуется для записи переменной в файл
Возвращаемое значение
Возвращает значение типа Long, содержащее число символов в строке или число байт, необходимое для размещения переменной
Обязательный аргумент -любое допустимое имя переменной.Если выражение имеет значение Null, то возвращается Null.Если же аргумент имеет значение типа Variant,то функция Len обрабатывает его так же, как и значение типа String, и всегда возвращает число содержащихся в нем символов
Пример:
' Вычисляем длину строки Русский_Проект
Print Len("Русский_Проект")
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Александр Шевченко
Здравствуйте, ataman!
К вышесказанному могу добавить, что если надо посчитать количество символов без пробелов например, то предварительно пробелы надо убрать функцией Replace, то есть код из первого ответа изменится на:
Dim intNameLength As Integer
Dim Str As String
Str = TextBox1.Text
Str = Replace(Str, " ", "") 'заменяем пробел на "ничего"
intNameLength = Len(Str)
Ответ отправил: Александр Шевченко (статус: 4-ый класс)
Ответ отправлен: 13.04.2006, 17:16