C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: string数式を計算


(過去ログ 81 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■47709 / inTopicNo.1)  string数式を計算
  
□投稿者/ スタートライン (1回)-(2010/03/11(Thu) 18:20:44)

分類:[C#] 

こんにちは。
早速ですが、質問があります。
クリップボードのなかに数式があったら計算して結果をクリップボードに返すソフトを作ろうと考えています。
(5×10+2)/(15-2)=
みたいな文字列をコピーすると、
(5×10+2)/(15-2)=13
となり、ペーストできるというイメージです。

大まかな方針として、次のように考えました。
けっこうめんどうそうなのですが、ひょっとしてもっと簡単にできる方法ってありますか?
int.Parse(数)みたいにすると、計算もしてくれるとかって、あるんでしょうか?

if (Clipboard.ContainsText())
string clipboardText = Clipboard.GetText();
//	数式かどうかを判定する。
if (Regex.Match(clipboardText,"[()0-9]+[+-×*/][()0-9+-*/=]+").Success)
//	()の前後で改行して配列に入れる。
string[] lines = clipboardText.Replace("(","\n(").Replace(")","\n)").Split('\n');
foreach(string line in lines)
	//( )でくくられているところを探す。
	if (line.Contains("(") && line.Contains(")"))
		//演算記号の前後を「 」でわける。
		string[] cells = line.Split(' ');
		//( 5 × 10 + 2 )
		//( 15 - 2 ) となる
		foreach(string cell in cells)
		//数字にする。int.Parse(cell)
		//四則演算する。こんな方法でできるのかな。
		int calicurate = cell[0] cell[1] cell[2] ………
		// 5 × 10 + 2 となる。
		//ぜんぶ1行にまとめる。
		// 52 / 13となる。
		//またわける。
		//くり返し。
		//()がなくなったら終了。

って感じかな〜と想像して、
書けば書けそうなんですけど、
すこしちゅうちょしてます。

なんとなく中身はこうなるんじゃないか、と考えて書いてみたんですけど、
ぜんぜん違っていたりしたら、アドバイスいただけるとうれしいです。
よろしくお願いします。

引用返信 編集キー/
■47710 / inTopicNo.2)  Re[1]: string数式を計算
□投稿者/ こくぶん (51回)-(2010/03/11(Thu) 18:36:11)
No47709 (スタートライン さん) に返信

コードは全く見ていませんが。。。 m(_ _)m

文字列の数式の計算結果を取得する
http://dobon.net/vb/dotnet/programing/eval.html
↑この辺りが参考になるかと思います。

引用返信 編集キー/
■47711 / inTopicNo.3)  Re[2]: string数式を計算
□投稿者/ スタートライン (2回)-(2010/03/11(Thu) 19:11:55)
No47710 (こくぶん さん) に返信
こくぶんさん、早速ありがとうございました。
ご指摘のページを参考に、簡単に処理できました。
自分で書いたほうが勉強にはなったかなとも思いますが…。
助かりました。
とりいそぎお礼まで。

解決済み
引用返信 編集キー/
■47713 / inTopicNo.4)  Re[1]: string数式を計算
□投稿者/ よねKEN (442回)-(2010/03/11(Thu) 20:25:20)
2010/03/11(Thu) 20:25:32 編集(投稿者)

解決済みですが、過去ログの以下が参考になると思います。
「電卓 ((1+2)3)カッコの入れ子」
http://bbs.wankuma.com/index.cgi?mode=al2&namber=32500&KLOG=57

後、手前味噌ですが、上記の質問があったときに書いた私の記事もどうぞ。
数式を解くプログラム その1 - 概要
http://d.hatena.ne.jp/yone-ken/20090218/1234954345
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -