Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Ramandu
0 / 0 / 1
Регистрация: 27.11.2018
Сообщений: 47
1

Не решает математику

29.11.2018, 21:06. Просмотров 1601. Ответов 8
Метки нет (Все метки)

Цель - решать примеры всего лишь используя только TextBox1 и кнопку "равно"(назовём ее button1).
Короче должно быть так. Я скажем, вписал в TextBox пример 15+2,3-5,5*(2,5+0,2)-20. Нажал равно. И программа мне должна выдать не ошибку "Неверный входной формат строки или как-то там", а результат. Да-да, с дробными числами и скобками тоже должен работать (если помню, то дробные это Double).
Язык Visual Basic в Visual Studio 2017 Community
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2018, 21:06
Ответы с готовыми решениями:

Учим математику
Всем привет...Возникла проблема, которую я не могу объяснить, и прошу помощи у вас... дело вот в...

Учить математику
Всем привет, Хочу восстановить школьные знания по математике(и геометрии) и, по возможности,...

Применяли ли Вы математику в программировании?
Я говорю о математике, выходящей за пределы школьной программы, например, графы, мат. логика и т. п.

Нужно выучить математику
Здравствуйте, уважаемые! В общем понадобилось выучить математику, желательно с 1 по 11 классы. Дело...

Задача на финансовую математику
Помогите вычислить, готовлюсь к сессии. Если можно формулу по которой можно решить эту задачу:...

8
ovva
2726 / 2240 / 546
Регистрация: 02.02.2013
Сообщений: 2,124
Записей в блоге: 2
29.11.2018, 21:20 2
Попробуйте приведенный ниже код тогда кроме элементарных операций будут доступны и некоторые функции. Например "2+5*sin(0.5)".
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
    Dim rr As Double = calculator(TextBox1.Text)
    If rr > Double.MinValue Then
        TextBox2.Text = rr.ToString
    Else
        TextBox2.Text = ""
    End If
End Sub
Private Function calculator(ByVal expression As String) As Double
    Try
        Dim scr = CreateObject("ScriptControl")
        scr.Language = "VBScript"
        Return (scr.eval(expression))
    Catch ex As Exception
        MsgBox(ex.Message)
        Return Double.MinValue
    End Try
End Function
2
Ramandu
0 / 0 / 1
Регистрация: 27.11.2018
Сообщений: 47
03.12.2018, 13:17  [ТС] 3
Лучший ответ Сообщение было отмечено Orlangur1991 как решение

Решение

Если уж полностью под меня поправить, то код будет выглядеть так:
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        If button.Name = "OpSQUARE" Then
            If TextBox1.Text = "" Then TextBox1.Text = "0"
            If TextBox2.Text = "" Then TextBox2.Text = "0"
        End If
        Dim tt As Double = calculator(TextBox1.Text)
            If tt > Double.MinValue Then
                TextBox2.Text = tt.ToString
            Else
                TextBox2.Text = ""
            End If
    End Sub
    Private Function calculator(ByVal expression As String) As Double
        Try
            Dim scr = CreateObject("ScriptControl")
            scr.Language = "VBScript"
            Return (scr.eval(expression))
        Catch ex As Exception
            Return Double.MinValue
        End Try
    End Function
Да, конечно, теперь можно считать примеры типа 5+3-2+4 (равно 10).
Но нажимая на кнопку, я получаю результат 10, а не 100 (как должно быть при вычислении площади квадрата). В чём ошибка? Ведь сказано tt*tt. Да, еще - если в примере будет так 5+2,5+0,5-1+3+4 то ничего не произойдет.

P.S. Чтобы программа не ругалась из-за отсутствия текста я сделал что если текста нет, то он равен нулю, кстати очень полезно.
0
Orlangur1991
1615 / 1297 / 325
Регистрация: 28.11.2014
Сообщений: 1,998
03.12.2018, 13:54 4
Ramandu,
Цитата Сообщение от Ramandu Посмотреть сообщение
Ведь сказано tt*tt
где?
0
03.12.2018, 13:54
Ramandu
0 / 0 / 1
Регистрация: 27.11.2018
Сообщений: 47
03.12.2018, 14:31  [ТС] 5
ааа...точно, спасибо. Нашел куда добавить, стало 100. Всё путём. Только если я теперь ввожу туда дробные числа, в текстовом поле один (на русском между прочим!) написано "бесконечность", а во втором текстбоксе 0
0
Ramandu
0 / 0 / 1
Регистрация: 27.11.2018
Сообщений: 47
03.12.2018, 14:34  [ТС] 6
Точно, спасибо, нашел где поправить, теперь 100. Всё путем, только если дробные вводить то получается "бесконечность".
0
Миниатюры
Не решает математику   Не решает математику  
Ramandu
0 / 0 / 1
Регистрация: 27.11.2018
Сообщений: 47
03.12.2018, 14:43  [ТС] 7
цифру ноль я убрал, она не нужна, второй текстбокс должен быть чистым, а вот что с бесконечностью делать не знаю
0
Orlangur1991
1615 / 1297 / 325
Регистрация: 28.11.2014
Сообщений: 1,998
03.12.2018, 14:56 8
Лучший ответ Сообщение было отмечено Ramandu как решение

Решение

Ramandu, при вводе необходимо дробные числа писать с разделителем - точкой, а не запятой
1
Ramandu
0 / 0 / 1
Регистрация: 27.11.2018
Сообщений: 47
03.12.2018, 15:24  [ТС] 9
Да, спасибо работает. Ты меня друг, во многом выручил!
0
03.12.2018, 15:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2018, 15:24

Перевод программы из Матлаба в Математику
Привет, ребят. Есть небольшой кусок программы в матлабе, но нужно сделать в "математике" , а я...

Работа с графикой, используя математику
Дано изображение , но оно должно быть закрытое!!!, разбитое на 6 квадратов или больше. Пользователь...

Вы хорошо знаете высшую математику?
На сколько хорошо должны знать математику программисты? Некоторые говорят, что мало, другие...


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

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

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