Реализация функций калькулятора

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Stalker1986
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 19.01.2009 (Пн) 7:23

Реализация функций калькулятора

Сообщение Stalker1986 » 12.04.2009 (Вс) 7:17

У меня такая проблема- есть калькулятор, есть кнопка на форме - +/- - для положительных и отрицательных чисел. При первом нажатии на поле TextBox к цифрам, которые уже введены добавляется символ "-" посредством кода:

If x = x Then
x = -x
Text1 = "-" + Text1.Text
Else
x = x
End If

Всё бы хорошо НО: как при повторном нажатии на кнопку убрать этот минус? Если в операторе ELSE функции if он убираться не хочет и при повторном нажатии добавляет к TextBox'у ещё один минус и т.д..

И ещё: как реализовать калькулятор инженерного вида с поддержкой как в стандартном- шестнадцатеричный, двоичный??? очень надо добавить хотя бы двоичный калькулятор в мой уже имеющийся.

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Реализация функций калькулятора

Сообщение karlex » 12.04.2009 (Вс) 8:29

Если хранить число, которое должно отражаться в текущий момент, в переменной числового типа, то можно сделать так:
Код: Выделить всё
Private Sub ...()
    x = -x
    Display(x)
End Sub

x - вымышленная переменная числового типа, хранит число
Display(<Number>) - вымышленная процедура, принимает в качестве параметра число и отображает его

Это мой подход.

В твоем случае можно проверить наличие символа "-" в строке, используя функцию Left$:
Function Left$(String As String, Length As Long) As String

Returns a specified number of characters from the left side of a string

После чего принять нужное решение.
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

Йода
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 99
Зарегистрирован: 06.01.2008 (Вс) 21:04
Откуда: Московская область

Re: Реализация функций калькулятора

Сообщение Йода » 12.04.2009 (Вс) 8:34

Самое первое, что мне пришло в голову:
Код: Выделить всё
Dim lngData1 As Long
lngData1 = CLng(Text1.Text)
lngData1 = Not (lngData1 - 1)
Text1.Text = CStr(lngData1)

Но это работает только с целыми числами.
З.Ы. Я долго, очень долго медитировал на твой код, особенно на
Stalker1986 писал(а):x = x
.
Sub or Function not defined

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Реализация функций калькулятора

Сообщение iGrok » 12.04.2009 (Вс) 11:01

Я гораздо дольше медитировал на If x = x Then...
Ты в курсе, что у тебя вторая часть выражения НИКОГДА не выполнится?

Итого: убрать нафиг условия. И сделать просто
Код: Выделить всё
x = -x
Text1.Text = x


2Йода:
А чем тебе не мил Text1.Text = -Val(Text1.Text) ?
label:
cli
jmp label

Йода
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 99
Зарегистрирован: 06.01.2008 (Вс) 21:04
Откуда: Московская область

Re: Реализация функций калькулятора

Сообщение Йода » 12.04.2009 (Вс) 15:08

iGrok писал(а):2Йода:
А чем тебе не мил Text1.Text = -Val(Text1.Text) ?
Абсолютно ничего не имею против
Код: Выделить всё
Text1.Text = -Val(Text1.Text)
Дело в том, что код, который я написал это было
Йода писал(а):Самое первое, что мне пришло в голову...
Sub or Function not defined

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Реализация функций калькулятора

Сообщение SLIM » 12.04.2009 (Вс) 16:35

проще всего умножать на -1 и не париться. Даже условий не нужно. Not здесь применять как-то не к лицу.
Stalker1986 писал(а):И ещё: как реализовать калькулятор инженерного вида с поддержкой как в стандартном- шестнадцатеричный, двоичный??? очень надо добавить хотя бы двоичный калькулятор в мой уже имеющийся.

Самое главное что ты не понимаешь, что нет никакой разницы в числах. Они в компьютере хранятся всегда в одном виде. А то, в каком они виде предстают перед нами - чисто заслуга человека.
Пишите жизнь на чистовик.....переписать не удастся.....

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Реализация функций калькулятора

Сообщение MIT » 12.04.2009 (Вс) 18:00

Stalker1986 писал(а):И ещё: как реализовать калькулятор инженерного вида с поддержкой как в стандартном- шестнадцатеричный, двоичный??? очень надо добавить хотя бы двоичный калькулятор в мой уже имеющийся.

http://www.vb-helper.com/howto_dec_hex_oct_bin.html
http://www.bigresource.com/VB-Binary-He ... UnMyW.html

P.S. код не смотрел, просто результат гуглинга
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

HiSER
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 88
Зарегистрирован: 04.07.2007 (Ср) 18:17

Re: Реализация функций калькулятора

Сообщение HiSER » 12.04.2009 (Вс) 20:25

Может так?
Код: Выделить всё
Private Sub Command1_Click()
Dim x As Double
x = Val(Text1.Text)
If x < 0 Then
x = Abs(x)
Else
x = -x
End If
Text1.Text = x
End Sub

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Реализация функций калькулятора

Сообщение MIT » 12.04.2009 (Вс) 20:42

HiSER писал(а):Может так?
Зачем? *(-1), имхо, рулит неимоверно.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: Реализация функций калькулятора

Сообщение dr.MIG » 12.04.2009 (Вс) 21:02

А чем не устраиват
Код: Выделить всё
Private Sub Command1_Click()
    Text1 = -Text1
End Sub


Или я не проникся сутью проблемы :)?
Salus populi suprema lex


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 56

    TopList  
cron