• ベストアンサー

VBで自身の研究用にグラフ描写ソフトを作成中ですが、行き詰ってます

VB2008で研究用ソフトの作成をしています。 数式を入力しそのグラフを書く、と言ったものを作ろうとしているのですがうまくいきません。 たとえば、TextBox1に何か数値を入力したとして、 Dim str As String = textbox1.text Dim num As Decimal = Decimal.Parse(str) とすれば確かにnumはInt型で計算ができるのですが、同様にy=3*xのグラフを入力してそのxに-1から1までの数値を代入させて点を取りたいとき、この方法ではどうにもできずに困っています。 たとえば上の例では、3*xを入力した後xに好きな値を代入できるようにするようにはどうしたらできるのでしょうか? 説明がわかりにくくてすみません。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

こんな方法はどうでしょうか? TextBox1.Textが3+xとかの場合です。 Sub sample() Dim sc As Object = CreateObject("MSScriptControl.ScriptControl") sc.Language = "VBScript" For x As Integer = -1 To 1 MsgBox(x & ":" & sc.Eval(TextBox1.Text.Replace("x", x))) Next End Sub

negi0810
質問者

お礼

ありがとうございます^^ がんばっていろいろと考えて見ます。

その他の回答 (1)

  • AKARI0418
  • ベストアンサー率67% (112/166)
回答No.1

式y=3*xを文字列として受け取るということですか? str="y=3*x"として考えてみます。 まずxにすきな値を置き換えるには。 str.Replace("x",n) 'nは入力値 n=10であれば str="y=3*10" となります。 しかしこれでは自動で計算できませんよね。 そこで dim y as integer = Integer.Parse(System.Math.BigMul(str.Substring(InStr(str, "="), InStr(str, "*") - InStr(str, "=") - 1), str.Substring(InStr(str, "*"), Len(str) - InStr(str, "*")))) と計算することでyを30と求めることができます。 str.Substring(InStr(str, "="), InStr(str, "*") - InStr(str, "=") - 1) で"="から"*"までの文字を抜き出し(ここでは3) str.Substring(InStr(str, "*"), Len(str) - InStr(str, "*")) で"*"からうしろの文字列を抜き出します(10) Integer.parseはinteger型への変換です。 System.Math.BigMulは掛け算です。

negi0810
質問者

お礼

ありがとうございます^^ 初心者でして複雑なことはわからないのですがいろいろとがんばってみます。

関連するQ&A