powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Четность\нечетность
61 сообщений из 61, показаны все 3 страниц
Четность\нечетность
    #36389581
Lexx_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Подскажите, пожалуйста, как проще определить четное число или нечетное в VB.
Есть ли какие-нибудь стандартные функции?
Спасибо.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389620
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
Public Function Check(ByVal Value As Integer) As Boolean
    Check = (Value \  2  = Value /  2 )
End Function

например, так
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389636
_Boroda_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lexx_SQL,

ЕНЕЧЕТ - ISODD(ссылка)
ЕЧЁТН - ISEVEN(ссылка)
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389829
Igor Mitichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lexx_SQL,

У меня получилось где-то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim testNumber As Integer

Private Sub Form_Load()
 testNumber =  5 

  If chek(testNumber) Then
   MsgBox "четное"
  Else
   MsgBox "нечетное"
  End If

 End
End Sub

Private Function chek(number As Integer) As Boolean
   If (number /  2  - Fix(number /  2 )) Then
    chek = False
   Else
    chek = True
   End If
End Function

...
Рейтинг: 0 / 0
Четность\нечетность
    #36389861
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вы даете, граждане.

IsOdd и IsEven — функции экселя.
Check = (Value \ 2 = Value / 2) — два математических и одно логическое действие.

Check = Value Mod 2 = 0 — самый кошерный способ.

Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389866
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант с Fix вообще за гранью добра и зла.

Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389872
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А разве нельзя проверять на остаток от деления на больше еденицы?
Код: plaintext
1.
2.
Function IsEven(ByVal nNumber as Long) As Boolean
IsEven = (nNumber Mod  2 ) =  0 
End Function


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389878
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
IsEven = ((nNumber Mod  2 ) =  0 )

=

Код: plaintext
Check = (Value \  2  = Value /  2 )

ничем не лучше и не хуже
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389887
_Boroda_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно так:

Sub ttt()
n_ = IIf(Application.WorksheetFunction.IsOdd([a1]), "нечетн", четн")
MsgBox n_
End Sub
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389893
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а индусы бы наверно просто тупо проверяли какая самая последняя цифра, если 0,2,4,6 или 8, то чётная, иначе нечётная.
Во всяком случае у них в оракле бывали коды и похлеще.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389904
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Playerа индусы бы наверно просто тупо проверяли какая самая последняя цифра, если 0,2,4,6 или 8, то чётная, иначе нечётная.
Во всяком случае у них в оракле бывали коды и похлеще.

кстати да, тоже вариант. не факт, что будет намного медленней
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389924
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneDjon Playerа индусы бы наверно просто тупо проверяли какая самая последняя цифра, если 0,2,4,6 или 8, то чётная, иначе нечётная.
Во всяком случае у них в оракле бывали коды и похлеще.

кстати да, тоже вариант. не факт, что будет намного медленней
Ну тогда с меня код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function isOdd(number As Integer) As Boolean
 Select Case Right(number,  1 )
   Case  0 ,  2 ,  4 ,  6 ,  8 
       isOdd = True 'Чётное
   Case Else
       isOdd = False 'Нечётное
 End Select
End Function
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389926
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
Код: plaintext
IsEven = ((nNumber Mod  2 ) =  0 )

=

Код: plaintext
Check = (Value \  2  = Value /  2 )

ничем не лучше и не хуже
Это если не проверять.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub Form_Load()
Dim r As Boolean
d = Timer
For x =  1  To  100000000 
    r = Check( 2222 )
Next
Debug.Print Timer - d
d = Timer
For x =  1  To  100000000 
    r = Check1( 2222 )
Next
Debug.Print Timer - d
End Sub


Public Function Check(ByVal Value As Integer) As Boolean
    Check = (Value \  2  = Value /  2 )
End Function

Public Function Check1(ByVal Value As Integer) As Boolean
    Check1 = Value Mod  2  =  0 
End Function

 15 , 14063  
 13 , 35938  
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389934
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не думаю, что это существенное отличие в скорости работы. если автору надо выжать каждую миллисекунду, то тогда конечно
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389935
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Playerа индусы бы наверно просто тупо проверяли какая самая последняя цифра, если 0,2,4,6 или 8, то чётная, иначе нечётная.
Во всяком случае у них в оракле бывали коды и похлеще.

зачем так много? преобразовать в бинарное представление и проверять Right-ом на "0" или "1"
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389938
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProDjon Playerа индусы бы наверно просто тупо проверяли какая самая последняя цифра, если 0,2,4,6 или 8, то чётная, иначе нечётная.
Во всяком случае у них в оракле бывали коды и похлеще.

зачем так много? преобразовать в бинарное представление и проверять Right-ом на "0" или "1"



а вот это уже на бейсике посложнее будет и не оправдано
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389947
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneShocker.ProDjon Playerа индусы бы наверно просто тупо проверяли какая самая последняя цифра, если 0,2,4,6 или 8, то чётная, иначе нечётная.
Во всяком случае у них в оракле бывали коды и похлеще.

зачем так много? преобразовать в бинарное представление и проверять Right-ом на "0" или "1"



а вот это уже на бейсике посложнее будет и не оправданоДа ну?
Код: plaintext
1.
2.
3.
4.
Public Function Check1(ByVal Value As Integer) As Boolean
    Check1 = Not Value And  1 
End Function

 12 , 46875  
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389950
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneа вот это уже на бейсике посложнее будет и не оправдано

А, черт, забыл, что VB нет встроенной функции преобразования в бинарный вид (в MSX - была)

Что-то не приходит больше в голову извращенных способов :)
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389963
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Antonariy
Да ну?
Код: plaintext
1.
2.
3.
4.
Public Function Check1(ByVal Value As Integer) As Boolean
    Check1 = Not Value And  1 
End Function

 12 , 46875  
[/quot]

это не преобразование в бинарный вид, но как вариант хороший. надо бы в фак все перечисленные способы как статейку =)
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389965
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Преобразование неявное.

Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389974
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПреобразование неявное.

Jah loves you.

это битовая операция, но никак не преобразование.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389975
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProKonst_Oneа вот это уже на бейсике посложнее будет и не оправдано

А, черт, забыл, что VB нет встроенной функции преобразования в бинарный вид (в MSX - была)

Что-то не приходит больше в голову извращенных способов :)

Тут есть два варианта преобразования в бинарный код в зависимости от знака числа. Смотреть Листинг 7.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389977
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не думал что такой простой вопрос может вызвать бурю обсуждений
Код: plaintext
1.
2.
3.
4.
5.
6.
 Dim i As Integer
 i =  5 
   If (i Mod  2  =  0 ) Then
     MsgBox "Четное"
   Else
     MsgBox "Не Четное"
   End If

Как вариант можете оформить как процедуру передавать ей свое число и возвращать она вам будет
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389981
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Core12,

уже было
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389987
Core12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сори не заметил
...
Рейтинг: 0 / 0
Четность\нечетность
    #36389998
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneAntonariyПреобразование неявное.

Jah loves you.

это битовая операция, но никак не преобразование.Тогда я не понял при чем тут преобразование вообще.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36390001
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да не причём =)
просто фраза была у шокер.про про преобразование двоичное

PS
хороший топик получился
...
Рейтинг: 0 / 0
Четность\нечетность
    #36390002
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyТогда я не понял при чем тут преобразование вообще.

Ну я имел ввиду функцию Bin$, которая преобразовывает число в строку с двоичным представлением. Но ее нет в VB, к сожалению (как и Oct$, Hex$...). Зато у тебя в итоге самый крутой вариант получился
...
Рейтинг: 0 / 0
Четность\нечетность
    #36390019
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, в смысле как вариант индусского кода?

Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36390036
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тут в фоне тестю в Excel и в wsh:

Check = Value Mod 2 = 0 - both
Check = (Input \ 2 = Input / 2) - both
IsOdd - only Excel
Check1 = Not Value And 1 - only Excel

Индусский код не проверял, но думаю - both :)
...
Рейтинг: 0 / 0
Четность\нечетность
    #36390071
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Если кто в ассемблере кумекает, можно вставки сделать.
Как делать вставки смотреть тут .
По идее всего-то надо проверить 0-вой бит.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36390076
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА, в смысле как вариант индусского кода?

Ну да.
Наверное, еще можно как-то через логарифм решить
...
Рейтинг: 0 / 0
Четность\нечетность
    #36390077
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, имя из предыдущего сообщения забыл убрать.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391068
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В условии спрашивалось про число , но уважаемые неиндусы ;-) почему-то решили ограничиться диапазонами чисел Integer и Long, позабыв про Double.
А так как операторы Mod , \ , And работают только с числами в диапазоне не более Long, т.е. от -2147483648 до 2147483647, то единственно корректное решение для чисел в VB как раз то, что якобы " вообще за гранью добра и зл а", которое привёл Igor Mitichev . Все остальные варианты сглючат. В этом легко убедиться на числах, например, 2147483650# (чётное) и 2147483651# (нечётное).

Также корректно, но медленно сработают WorksheetFunction.IsOdd и WorksheetFunction.IsEven, которые упомянул _Boroda_ , но это применимо не к VB (см.запрос), а только к VBA Excel, причём, начиная с версии 2007.

Функции определения чётности/нечетности удобнее записать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Function IsEven(Num As Double) As Boolean
  IsEven = Fix(Num /  2 ) = Num /  2 
End Function

Function IsOdd(Num As Double) As Boolean
  IsOdd = Fix(Num /  2 ) <> Num /  2 
End Function
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391070
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если нужно сделать полный аналог Excel-функций =ISEVEN() и =ISODD() из надстройки Analysis ToolPack, которые игнорируют дробную часть числа, тогда так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Function IsEvenXL(Num As Double) As Boolean
  IsEvenXL = Fix(Num) /  2  = Fix(Fix(Num) /  2 )
End Function

Function IsOddXL(Num As Double) As Boolean
  IsOddXL = Fix(Num) /  2  <> Fix(Fix(Num) /  2 )
End Function
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391317
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZVI,

Давайте-ка заглянем в Википедию

Чётность в теории чисел — способность целого числа делиться без остатка на 2.

То есть в вашем случае число не удовлетворяет сразу двум условиям определения - оно не целое и не делится без остатка на 2 (в любом случае)

Я не знаю, откуда засунули в Вики это определение, но вы его оспариваете?
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391455
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе ничто не запрещает double иметь целое значение, но я ни разу не встречал задачу, где было бы необходимо проверить на четность именно double. Как правило при использовании double разработчика интересует именно его способность иметь дробную часть. Так что рассуждения ZVI к реальности отношения не имеют. В конце концов Clng(dbl) никто не отменял и оно в любом случае быстрее Fix (тем более в количестве трех штук) с обвесами.

Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391603
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну моей у моей функции тоже нет ограничений связанных с Integer.
Просто меняем тип входящей переменной на String.
По идее можно вообще любое целое число проверять если его загнать в String.

Sub test()
MsgBox isOdd(2147483654#)
End Sub

Function isOdd(number As String) As Boolean
Select Case Right(number, 1)
Case 0, 2, 4, 6, 8
isOdd = True 'Чётное
Case Else
isOdd = False 'Нечётное
End Select
End Function
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391660
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player,

Ваша функция нерабочая технически (число всегда будет нечетное) и неадекватная логически (попробуйте проверить число 0.2, когда исправите предыдущую ошибку).
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391748
Igor Mitichev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВариант с Fix вообще за гранью добра и зла.

Почему? Здесь рассматривались варианты с "\" и "mod". Но чем принципиальным они отличаются? MSDN собственно, раскрывает работу mod через fix. По сути то же самое относится и к "\". Другой вопрос, как оно там внутри реализовано... Может fix и будет работать чуть медленнее, но как это определить?

MSDNВыражение a Mod b является эквивалентом для любой из следующих формул:
a - (b * (a \ b))
a - (b * Fix(a / b))


То есть получается, что если мы используем mod, то VB для вычисления результата где-то там внутри себя все равно использует fix (или "\", но сдается мне, что она тоже в конце концов обратится к fix). Или я чего-то недопонимаю?
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391834
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor MitichevПочему?Потому что во-первых Fix, во-вторых If, в-третьих целых три арифметических операции. Результат немного предсказуем.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Private Sub Form_Load()
Dim r As Boolean
d = Timer
For x =  1  To  100000000 
    r = Check( 2222 )
Next
Debug.Print Timer - d
d = Timer
For x =  1  To  100000000 
    r = Check1( 2222 )
Next
Debug.Print Timer - d
d = Timer
For x =  1  To  100000000 
    r = chek( 2222 )
Next
Debug.Print Timer - d
End Sub


Public Function Check(ByVal Value As Integer) As Boolean
    Check = (Value \  2  = Value /  2 )
End Function

Public Function Check1(ByVal Value As Integer) As Boolean
    Check1 = Value Mod  2  =  0 
End Function

Private Function chek(number As Integer) As Boolean
   If (number /  2  - Fix(number /  2 )) Then
    chek = False
   Else
    chek = True
   End If
End Function

  14 , 60938  
  12 , 90625  
  15 , 8125  

Другой вопрос, как оно там внутри реализовано... Не столь важно, как это там реализовано, важнее то, что VB имеет тормоза при передаче параметров. А If медленнее Select case.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim Value As Integer
d = Timer
Value =  2222 
For x =  1  To  100000000 
    r = Value Mod  2  =  0 
Next
Debug.Print Timer - d

  2 , 078125  
Показательно, не так ли? C ByVal будет еще раза в два медленне, чем 15,8125, но уже по той причине, что будет выделяться память под локальную переменную и копирование значения.


Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391880
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyDjon Player,

Ваша функция нерабочая технически (число всегда будет нечетное) и неадекватная логически (попробуйте проверить число 0.2, когда исправите предыдущую ошибку).На счёт нерабочая, не согласен. И чётность и нечётность показывает верно. А пример с 0.2 не корректен, т.к. 0.2. не является целым числом и проверять его чётность бессмысленно. Оно не является ни тем не другим.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391918
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет ByVal беру свои слова назад, это видимо справедливо для строк (не помню уже, где я наблюдал резкий прирост производительности при переходе на ByRef), получилась прямо противоположная картина. А вернее каша.
Результаты с ByRef:

Check_Div 15,03125
Check_Mod 13,26563
Check_Fix 15,78125
Check_And 12,67188

Результаты с ByVal:

Check_Div 14,5625
Check_Mod 12,98438
Check_Fix 15,42188
Check_And 13,64063

Обратите внимание, первые три способа от перехода на ByVal выиграли, а последний проиграл целую секунду! Я произвел несколько замеров, это результат последнего, картина везде одинаковая, так что сучайные флуктуации винды можно исключить.

Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391932
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon PlayerAntonariyDjon Player,

Ваша функция нерабочая технически (число всегда будет нечетное) и неадекватная логически (попробуйте проверить число 0.2, когда исправите предыдущую ошибку).На счёт нерабочая, не согласен. И чётность и нечётность показывает верно. А пример с 0.2 не корректен, т.к. 0.2. не является целым числом и проверять его чётность бессмысленно. Оно не является ни тем не другим.На счет нерабочей да, я забыл, что строка приведется к числу, поэтому 2 = "2". А насчет логичности — вы же ее позиционируете как работающую со строками, а где гарантия, что в строке не будет, например, отрывок из Капитала? В случае с числовыми типами это гарантируется самим типом. Так что вашей функции не хватает проверки на валидность.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391943
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чтобы совсем закрыть этот вопрос, вот ее результат:
isOdd 93,0625

Оставим ее индусам.

Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391947
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy
На счет нерабочей да, я забыл, что строка приведется к числу, поэтому 2 = "2". А насчет логичности — вы же ее позиционируете как работающую со строками, а где гарантия, что в строке не будет, например, отрывок из Капитала? В случае с числовыми типами это гарантируется самим типом. Так что вашей функции не хватает проверки на валидность.
В предыдущих примерах при использовании тех-же 0.2 результат будет так-же не верен (либо выдадут, что число чётно, либо что нечётно, а это в любом случае не правильно), но почему-то там про проверку валидности вы не упомянули.
А валидность проверить не сложно.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391960
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА чтобы совсем закрыть этот вопрос, вот ее результат:
isOdd 93,0625

Оставим ее индусам.

Jah loves you. Что медленно работает, согласен, но это и так было ожидаемо.
У меня получились такие реузьтаты:
Check 9,71875
Check1 7,890625
chek 10,75
isOdd 81,53125
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391971
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon PlayerВ предыдущих примерах при использовании тех-же 0.2 результат будет так-же не веренВ предыдущих примерах дробное число проверить вообще не получится потому что тип целочисленный, число будет округлено.
Djon PlayerА валидность проверить не сложно.Угу, и затормозить тем самым до черепашьего состояния. Нет уж, велосипеды нам не нужны, а с квадратными колесами тем более :)


Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391976
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon PlayerУ меня получились такие реузьтаты:Попробую угадать: Intel Core i5? :)
...
Рейтинг: 0 / 0
Четность\нечетность
    #36391985
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyDjon PlayerУ меня получились такие реузьтаты:Попробую угадать: Intel Core i5? :)Почти, но чуть похуже Intel Core 2 DUO E7400 2800Mhz
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392012
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Djon Player
> А пример с 0.2 не корректен, т.к. 0.2. не является целым числом и проверять его чётность бессмысленно. Оно не
> является ни тем не другим.

А почему пример не коректен? в параметре ожидается Double, а 0.2 является Double, поэтому коректно любое число типа
Double.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392038
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*шепотом* в параметре ожидается String, корректно всё :)

Jah loves you.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392053
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Djon Player
> А пример с 0.2 не корректен, т.к. 0.2. не является целым числом и проверять его чётность бессмысленно. Оно не
> является ни тем не другим.

А почему пример не коректен? в параметре ожидается Double, а 0.2 является Double, поэтому коректно любое число типа
Double.

Дискуссия продолжается
Просто мне было сделано замечание, что моя функция не проверяет валидность, в частности можно ыыести 0.2 или просто левый текст. Я с этим согласен и не спорю. Просто не корректно делать это замечание одному мне.
Т.к. в других примерах где передается число типа Double, например 0.2 будет выдано неверное решение. А именно, либо выдаст что число чётно, либо что нечётно. Хотя правильным результатом является третий вариант, что введено некорректное число.
А некорректно оно потому, что понятие четности и нечётности относиться только к целым числам, а не к дробным.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392163
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Djon Player
> Дискуссия продолжается

Ведь скоро новый год, а топик обсуждения TJ7 закрыли, развлекатся большше негде
Поэтому дискуссия только приветствуется

> Просто не корректно делать это замечание одному мне.

Прошу прощения, мне показалось что ваша функция принимает параметром дабл, а не стринг. Перепутал с какой-то из выше
приведеных функций.

> А некорректно оно потому, что понятие четности и нечётности относиться только к целым числам, а не к дробным.

Вот! Золотые слова!
Просмотрел ветку, и понял что меня сбила с толку функция ZVI

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392170
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносВедь скоро новый год, а топик обсуждения TJ7 закрыли, развлекатся большше негде
Поэтому дискуссия только приветствуется


Так кто же сделает проверку четности через логарифм?
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392188
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Shocker.Pro
Shocker.ProТо есть, в вашем случае число не удовлетворяет сразу двум условиям определения - оно не целое и не делится без остатка на 2 (в любом случае) Очень хорошо удовлетворяет, причем сразу обоим.
В моем примере оба числа 2147483650 и 2147483651 целые, первое из них чётное, второе – нечётное. Можете взять другие числа вне диапазона Long, например, 3000000000 и 3000000001.

Во втором моём сообщении речь шла об аналоге Excel-функции =ISEVEN() и =ISODD().
Не хотите же Вы Википедией оспорить тот факт, что эти Excel-функции работают (кстати, в диапазоне шире Long) и с дробными числами, игнорируя дробную часть чисел?
---------

2 Antonariy
AntonariyКак правило, при использовании double разработчика интересует именно его способность иметь дробную часть. Так что рассуждения ZVI к реальности отношения не имеют. В конце концов Clng(dbl) никто не отменял и оно в любом случае быстрее Fix (тем более в количестве трех штук) с обвесами. Разве проверка чисел 3000000000 и 3000000001 на чётность не реальна? :-)
Не представляю, в какой реальности можно преобразовывать эти числа по предложенному Вами варианту Clng(dbl)? В моей такое преобразование Clng(3000000001) выдает ошибку ;)


AntonariyА If медленнее Select case. В Вашем контексте, речь, скорее всего, о реализации Select case на C. потому что в VB if быстрее, чем Select case.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392194
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
Ведь скоро новый год, а топик обсуждения TJ7 закрыли, развлекается больше негде Да, я заметил, что сегодня в этой тебе большая активность.
А про TJ7 я видимо что-то интересное пропустил.
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392236
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Djon Player
> А про TJ7 я видимо что-то интересное пропустил.

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

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392271
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro[quot Игорь Горбонос]Так кто же сделает проверку четности через логарифм?С логарифами что-то я даже не представляю как проверять чётность.

Лучше приведу ещё один вариант медленного кода с неявными преобразованиями типов данных:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function isOdd2(number As String) As Boolean
 Dim i As Integer
 i = Right(number,  1 )
 
 While i >  1 
   i = i -  2 
 Wend
 isOdd2 = (i =  0 )
End Function.

Правда работает она быстрее, чем предыдущий вариант isOdd.
Очевидно, что скорость ещё зависит от входных данных.

Для числа 2222 время 52,8125 сек

Для числа 1000 время 49,42188 сек - Min
Для числа 1008 время 59,14063 сек - Max
...
Рейтинг: 0 / 0
Четность\нечетность
    #36392290
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Djon Player
> А про TJ7 я видимо что-то интересное пропустил.

Вот TJ7, великий и ужасный. На досуге можно и посмеятся,
а перечитывать 99 страниц снова, увольте
Да. припоминаю, в самом начале когда только появилось первое сообщение читал его. Потом ещё пару раз читал некоторые ответы, понял, что я не в теме и дальше читать мне нет смысла и больше не отслеживал.
А 99 страниц это конечно жёстко, если бы не закрыли, то может быть бы 100 страниц к Новому году было, цифра поинтереснее.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Четность\нечетность
    #39445985
95bugimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,кошерный,но когда число равно 22,последняя цифра =2.то он получает 1 и все летит к чертям..
...
Рейтинг: 0 / 0
61 сообщений из 61, показаны все 3 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Четность\нечетность
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]