С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 4

Программа должна уметь распознавать функции, записанные в TextBox

08.12.2012, 14:36. Показов 2938. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При запуске формы выводится пустой picturebox, кнопка и textbox. Вводим в textbox функцию, например sin(x), нажимаем кнопку, появляется синусоида. Я знаю всё, кроме как сделать так, что бы VB считывал функцию из textbox.
вот кусок кода
Visual Basic
1
2
3
For x = -10 To 10 Step 0.001
If Text1.Text <> "" Then Picture1.PSet (x, ?), vbRred
Next x
Что вставить вместо "?"?
Заранее благодарен!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2012, 14:36
Ответы с готовыми решениями:

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

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

Пользователь вводит 10 чисел программа должна выдать 2 максимальных(берём от 1 до 10,если выпадает 2 10,то программа должна выдать 2 10,а не 10,9)
#include &lt;iostream&gt; using namespace std; int main () { int number, largest_1, largest_2, counter = 1; cout«&quot;Vvedite 1oe...

11
 Аватар для Апострофф
9908 / 3923 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
08.12.2012, 16:09
Как написать калькулятор, вычисляющий выражение в TextBox
Visual Basic
1
2
3
4
5
6
7
Private Sub Command1_Click()
Set objScript = CreateObject("MSScriptControl.ScriptControl")
objScript.Language = "VBScript"
For x = -10 To 10 Step 0.001
  If Text1.Text <> "" Then Picture1.PSet (x * 1000, 2000 + 1000 * objScript.eval(Replace(Text1.Text, "x", Str(x), , , vbTextCompare))), vbRred
Next x
End Sub
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
08.12.2012, 22:49
Цитата Сообщение от girya24kg Посмотреть сообщение
Я знаю всё, кроме как
- т.е. проблема только в том, чтобы взять строку из текстбокса? Ну, это просто:

Visual Basic
1
Stri$=Text1.Text
А остальное (пропарсить строку, вычислить значение рекурсивным спуском или с двумя стеками) ты знаешь... Удачи!

Добавлено через 6 часов 29 минут
Апострфф, это хороший прием, но с неприятной ошибкой. Она проявится, если пользователь захочет воспользоваться функцией exp. Так что без парсера все равно не обойтись...
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
09.12.2012, 00:13
Лучший ответ Сообщение было отмечено как решение

Решение

ScriptControl - это не только ценный мех вычислитель выражений, но и интерактивная программная среда, в которой можно создавать процедуры и функции, а потом вызывать их:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Command1_Click()
Set objScript = CreateObject("MSScriptControl.ScriptControl")
objScript.Language = "VBScript"
On Error Resume Next
objScript.AddCode ("Function UserFunc(x)" & _
                "UserFunc = " & Text1.Text & _
                "End Function")
If Err Then MsgBox "Неверный синтаксис функции!": Exit Sub
For x = -10 To 10 Step 0.001
'    Debug.Print x, objScript.Run("UserFunc", x)
    Picture1.PSet (x * 1000, 2000 + 1000 * objScript.Run("UserFunc", x)), vbRred
Next x
End Sub
Соответственно, с exp(x) никаких проблем
5
 Аватар для Denri
179 / 57 / 0
Регистрация: 10.07.2012
Сообщений: 347
Записей в блоге: 2
09.12.2012, 02:19
Цитата Сообщение от girya24kg Посмотреть сообщение
Я знаю всё, кроме как сделать так, что бы VB считывал функцию из textbox.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Option Compare Text
Option Explicit
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Foo1 As Long, ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long
 
 
Private Sub Command1_Click()
If Len(Text1.Text) <> 0 Then
Dim Result As Boolean, Code As String
Code = Text1.Text
Result = EbExecuteLine(StrPtr(Code), 0&, 0&, False) = 0
txtCode.SetFocus
End Sub
НЕ ОФИЦАЛЬНАЯ функция(aip)
Пишешь код в Text1 на VB6 и он обрабатывает его (там напиши как тебе надо чтобы синусоиду на рисовал на picturebox прям в Text1 и все)
PS подходит тока к VB6
2
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 4
09.12.2012, 11:05  [ТС]
Ничего не вышло...VB так и не может понять что я ему пишу в текстбоксе...
Вместо ? я поставил переменную fun.
Visual Basic
1
2
3
4
fun=text1.text
For x = -10 To 10 Step 0.001
If Text1.Text <> "" Then Picture1.PSet (x, fun), Str(Form2.Text1)
Next x
При вводе чисел, график рисуется, соответвенно в виде прямой. Как только я ввожу какую-либо функцию сразу вылазиет ошибка несовпадения типов и в отладке указывается эта строка:
Visual Basic
1
If Text1.Text <> "" Then Picture1.PSet (x, fun), Str(Form2.Text1)
Навожу на x - он равен -10, навожу на fun он равен x. Но он не понимает что это за x. Помогите всё же решить эту проблему.

P.S. Под словами "я знаю всё, кроме как" я имел в виду, что в данной программе мне непонятно, пока, только как вытащить это значение из текстового поля.
0
 Аватар для Апострофф
9908 / 3923 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
09.12.2012, 11:28
girya24kg, а ты пробовал то, что тебе предлагали
Вложения
Тип файла: zip SinX.zip (1.3 Кб, 53 просмотров)
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
09.12.2012, 12:35
Цитата Сообщение от Казанский Посмотреть сообщение
Соответственно, с exp(x) никаких проблем
- это вариант. Но то, что я писал про exp, относилось к коду Апостроффа.
0
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 4
09.12.2012, 12:47  [ТС]
Спасибо!

Добавлено через 11 минут
Цитата Сообщение от Казанский Посмотреть сообщение
ScriptControl - это не только ценный мех вычислитель выражений, но и интерактивная программная среда, в которой можно создавать процедуры и функции, а потом вызывать их:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Command1_Click()
Set objScript = CreateObject("MSScriptControl.ScriptControl")
objScript.Language = "VBScript"
On Error Resume Next
objScript.AddCode ("Function UserFunc(x)" & _
                "UserFunc = " & Text1.Text & _
                "End Function")
If Err Then MsgBox "Неверный синтаксис функции!": Exit Sub
For x = -10 To 10 Step 0.001
'    Debug.Print x, objScript.Run("UserFunc", x)
    Picture1.PSet (x * 1000, 2000 + 1000 * objScript.Run("UserFunc", x)), vbRred
Next x
End Sub
Соответственно, с exp(x) никаких проблем
На функции работает, а на числа нет...как так?. На x тоже не работает...
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38163 / 21098 / 4306
Регистрация: 12.02.2012
Сообщений: 34,686
Записей в блоге: 14
09.12.2012, 13:05
Цитата Сообщение от girya24kg Посмотреть сообщение
На x тоже не работает.
- не могу удержаться... Классная формулировка!
0
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 4
09.12.2012, 13:29  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- не могу удержаться... Классная формулировка!
ахахха
Главное - смысл понятен

Быть может вы сможете мне помочь?

Добавлено через 17 минут
Хммм...Программа казанского считает оказывается
Нужно только функцию в скобках вводить
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
09.12.2012, 14:42
Попробуй вот это. Делал когда то для сына. Немного сыровато, но если захочешь, сам доработаешь.
Вложения
Тип файла: rar График.rar (3.1 Кб, 62 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2012, 14:42
Помогаю со студенческими работами здесь

Сохранить в TextBox записанные в него цифры
Как сделать, чтобы при нажатии кнопки Save(кнопка на форме) в нескольких TextBox сохранились бы последние значения и, чтобы в дальнейшем...

Какие функции должна выполнять программа «файловый сервер»?
Подскажите какие функции должна выполнять программа из задания и как это реализовать в WindowsForm? Возможно есть примеры подобных...

Программа должна считать производную,более менее точно от функции.
Привет помогите разобраться.Программа должна считать производную,более менее точно от функции.У меня считает но,параметр r не влияет на...

Программа должна вычислять значение функции cos(x) действительного аргумента x
Написать программу для вычисления значения функции cos(x) действительного аргумента x с точностью ε с использованием рекурсии. Если...

Как перенести данные записанные в multiline textbox в excel?
Добрый вечер! Никак не могу найти ответ как перенести данные записанные в multiline textbox в excel, но так чтоб в каждой ячейке было...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru