Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 15
1

Является ли введенная строка шестнадцатиричной

25.11.2013, 22:14. Показов 1725. Ответов 20
Метки нет (Все метки)

Помогите написать программу
Нужно проверить является ли введенная строка шестнадцатиричной записью кода...
Спасибо!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2013, 22:14
Ответы с готовыми решениями:

Проверить является ли введенная строка палиндромом
Объясните как это работает , желательно с комментариями возле кода #include"stdio.h" ...

Проверить, является ли введенная строка палиндромом
Написать программу, которая проверяет, является ли введенная строка палиндро- мом "А роза упала...

Определить, является ли введенная строка полиндромом
Определить, является ли введенная строка полиндромом (слово, читающееся одинаково слева направо и...

Определить, является ли введенная строка палиндромом
Помогите пожалуйста решить задачу! _________________________________ Составьте программу,...

20
Заблокирован
26.11.2013, 05:27 2
Лучший ответ Сообщение было отмечено как решение

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub Davchikf()
Debug.Print IsHex(InputBox("Ââåäèòå øåñòíàäöàòèðè÷íóþ çàïèñü êîäà:"))
End Sub
 
Function IsHex(S As String) As Boolean
Dim D As Double
On Error Resume Next
D = "&H" & S
IsHex = Err = 0
End Function
3
Заблокирован
26.11.2013, 15:58 3
Запись 16-ричного числа... от 0 до 9 и ABCDEF
Начинается с &H (HEX значит)
Примеры...

&H,&H0 .. = 0
&H9=9
&HA=10
&HF=15
&HFF=255
0
Модератор
8387 / 3157 / 824
Регистрация: 22.02.2013
Сообщений: 4,694
Записей в блоге: 78
26.11.2013, 18:15 4
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Апострофф, Ваш код будет показывать только до FFFFFFFFFFFFFFFF (64 бита). Рекурсивный метод:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option Explicit
 
Private Sub Form_Load()
    Debug.Print IsHex(InputBox("Введите шестнадцатиричную запись кода:"))
End Sub
 
Private Function IsHex(S As String) As Boolean
    Static i As Long, c As String
    If i < Len(S) Then
        i = i + 1: c = UCase(Mid$(S, i, 1))
        IsHex = ((c >= "0" And c <= "9") Or (c >= "A" And c <= "F")) And IsHex(S)
    Else: i = 0: IsHex = True
    End If
End Function
1
Заблокирован
26.11.2013, 19:38 5
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
DefStr J, S: DefLng F, M-N, U
'
'   © JoraVoenyjHaker
'
Public Function isHEX(ByVal HexNum$) As Boolean
    Const hex = "0123456789abcdef"
    Dim f
    For f = 1 To Len(HexNum)
        If InStr(1, hex, Mid(HexNum, f, 1), vbTextCompare) = 0 Then Exit Function
    Next
    isHEX = True
End Function
 
Sub main()
    'ПРОГОВОРИТЬ ОТВЕТ !
    CreateObject("SAPI.SpVoice").Speak IIf(isHEX(InputBox("Ваше число...")), "YES", "NO")
End Sub
Добавлено через 39 минут
можно конечто воспользоваться как предложил Апострофф или The trick
но у меня универсальный и быстрый способ, к томуже ответ проговариваеться !


для модуля формы
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
'
'   © JoraVoenyjHaker
'
Public Function isHEX(ByVal HexNum$) As Boolean
    Const hex = "0123456789abcdef"
    Dim f&
    For f = 1 To Len(HexNum)
        If InStr(1, hex, Mid(HexNum, f, 1), vbTextCompare) = 0 Then Exit Function
    Next
    isHEX = True
End Function
 
 
Private Sub Form_Load()
    'ПРОГОВОРИТЬ ОТВЕТ !
    CreateObject("SAPI.SpVoice").Speak IIf(isHEX(InputBox("Ваше число...")), "YES", "No")
End Sub


Добавлено через 9 минут
Ещё побыстрее
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Option Explicit
'
'   © JoraVoenyjHaker
'
Public Function isHEX(ByVal HexNum$) As Boolean
    Const hex = "0123456789abcdef"
    Dim f&
    HexNum = LCase(HexNum)
    For f = 1 To Len(HexNum)
        If InStr(1, hex, Mid$(HexNum, f, 1), vbBinaryCompare) = 0 Then Exit Function
    Next
    isHEX = True
End Function
 
 
Private Sub Form_Load()
    'ПРОГОВОРИТЬ ОТВЕТ !
    CreateObject("SAPI.SpVoice").Speak IIf(isHEX(InputBox("Ваше число...")), "YES", "No")
End Sub
0
Модератор
8387 / 3157 / 824
Регистрация: 22.02.2013
Сообщений: 4,694
Записей в блоге: 78
26.11.2013, 19:44 6
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
но у меня универсальный и быстрый способ
В чем его универсальность? Он не быстрей - ты запускаешь каждый раз поиск по строке сначала (алгоритм маляра Шлемеля)
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
к томуже ответ проговариваеться !
Ну может только это.
0
Заблокирован
26.11.2013, 19:52 7
Цитата Сообщение от The trick Посмотреть сообщение
алгоритм маляра Шлемеля
вы просто не хотите признавать что мой алгоритм лучше
0
Модератор
8387 / 3157 / 824
Регистрация: 22.02.2013
Сообщений: 4,694
Записей в блоге: 78
26.11.2013, 20:11 8
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
вы просто не хотите признавать что мой алгоритм лучше
А я не говорил что чей-то алгоритм лучше. Я написал что твой код не быстрее. Попробуй замени в своем коде InStr на обычную проверку, и увидишь что он стал работать еще быстрее.
0
Заблокирован
26.11.2013, 20:22 9
Тогда без InStr и рекурсий

вот....
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
'
'   © JoraVoenyjHaker
'
Public Function isHEX(ByVal HexNum$, Optional i) As Boolean
    Dim f&
    HexNum = UCase(HexNum)
    For f = 1 To Len(HexNum)
        Select Case Asc(Mid$(HexNum, f, 1))
        Case 48 To 57, 65 To 70
        Case Else: Exit Function
        End Select
    Next
    isHEX = True
End Function
 
 
Private Sub Form_Load()
    'ПРОГОВОРИТЬ ОТВЕТ !
    CreateObject("SAPI.SpVoice").Speak IIf(isHEX(InputBox("Ваше число...")), "YES", "No")
End Sub
0
Модератор
8387 / 3157 / 824
Регистрация: 22.02.2013
Сообщений: 4,694
Записей в блоге: 78
26.11.2013, 20:24 10
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
Тогда без InStr и рекурсий
Тогда уж так
Visual Basic
1
2
3
4
5
6
7
8
Public Function isHEX2(ByVal HexNum$) As Boolean
    Dim f As Long, l() As Byte ', p As Byte
    l = HexNum
    For f = 0 To UBound(l) Step 2
        If Not ((l(f) >= 48 And l(f) <= 57) Or ((l(f) And &H20) >= 65 And (l(f) And &H20) <= 70)) Then Exit Function
    Next
    isHEX2 = True
End Function
У меня работает в среднем в 7 раз быстрей чем с InStr
1
Заблокирован
26.11.2013, 20:34 11
ну почему я не догадался тоже в байтовый массив перевести
0
Модератор
Эксперт Python
28592 / 15456 / 3053
Регистрация: 12.02.2012
Сообщений: 25,340
Записей в блоге: 4
27.11.2013, 10:21 12
Лучший ответ Сообщение было отмечено как решение

Решение

Или так:

Visual Basic
1
2
3
4
5
6
7
Function isHex(stri As String) As Boolean
Dim regExp As Object
    Set regExp = CreateObject("VBScript.RegExp")
    regExp.Pattern = "^&[h,H][0-9,a-f,A-F]{1,}$"
    isHex = CBool(regExp.Test(stri))
    Set regExp = Nothing
End Function
В дополнение замечу: специально советовался с грамотным филологом по поводу правописания слова "шестнадцатЕричный". Должна употребляться буква "e" (от суффиксов "ер" - пятЕРо, шестЕРо и т.п.
4
Заблокирован
27.11.2013, 10:41 13

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
В дополнение замечу: специально советовался с грамотным филологом по поводу правописания слова "шестнадцатЕричный". Должна употребляться буква "e" (от суффиксов "ер" - пятЕРо, шестЕРо и т.п.
Вы наверное нехорошо себя чувствуете, когда кто-то пишет с ошибками )))...



Добавлено через 2 минуты

Не по теме:

Проверочное слово: -мне нет ещё шестнадцати... )))



Добавлено через 10 минут
Цитата Сообщение от Catstail Посмотреть сообщение
Visual Basic
1
2
3
4
5
6
7
Function isHex(stri As String) As Boolean
Dim regExp As Object
   Set regExp = CreateObject("VBScript.RegExp")
   regExp.Pattern = "^&[h,H][0-9,a-f,A-F]{1,}$"
   isHex = CBool(regExp.Test(stri))
   Set regExp = Nothing
End Function
Кстате полезный код, запишу в свою записную книжку...
1
Заблокирован
27.11.2013, 11:11 14
Лучший ответ Сообщение было отмечено как решение

Решение

Catstail, как всё запутано
Visual Basic
1
2
3
Function isHex(stri As String) As Boolean
isHex=not stri like "*[!0-9A-Fa-f]*"
End Function
4
Заблокирован
27.11.2013, 11:34 15
Ну вот... похоже это самое правильное решение !!!

Мне это очень пригодиться... спасибо, это ж надо до-думаться !!! )))

Апострофф, -снимаю шляпу...
0
Апострофф
27.11.2013, 11:36
  #16

Не по теме:

JoraVoenyjHaker, ты угомонишься наконец:wall:
Не заставляй меня краснеть:-[

0
Модератор
Эксперт Python
28592 / 15456 / 3053
Регистрация: 12.02.2012
Сообщений: 25,340
Записей в блоге: 4
27.11.2013, 15:31 17
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
Проверочное слово: -мне нет ещё шестнадцати...
- это НЕ ПРОВЕРОЧНОЕ слово.

Добавлено через 5 минут
Да, и я решал несколько другую задачу: "является ли строка корректным изображением шестнадцатеричной константы VB"
0
Заблокирован
27.11.2013, 15:43 18
я кстате знал об like но так-как редко использую в своих прогах
лень было про неё узнавать... а зря...
0
Модератор
Эксперт Python
28592 / 15456 / 3053
Регистрация: 12.02.2012
Сообщений: 25,340
Записей в блоге: 4
27.11.2013, 15:50 19
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
Мне это очень пригодиться
:

Правильно так:

1) Мне это МОЖЕТ очень пригодитЬся
2) Мне это очень пригодитЬся

0
Заблокирован
27.11.2013, 16:00 20
Зато как красочно! у меня получаеться рассказать о проблеме )))
и многие понимают что это я пишу )))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.11.2013, 16:00

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Является ли введенная строка целым числом
Написать программу, которая проверяет, является ли введенная строка целым числом. Срочно надо,...

Является ли введенная с консоли строка симметричной
Программа определяет, является ли введенная с консоли строка симметричной. Например, строка «казак»...

Является ли введенная с клавиатуры строка целым числом
Написать программу, которая проверяет, является ли введенная с клавиатуры строка целым числом.

Определить, является ли введенная строка шестнадцатеричным числом
Написать программу, которая проверяет, является ли введенная строка шестнадцатеричным числом....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.