長文失礼します。
二百五+十=
を読み込み、書き込みファイルへ
二百五+十=二百十五
と出力することが今回実行したいことです。
下記ソースで、
例)三四+一五二=一八六
といった計算処理までは行えています(エラー処理は未実装)。
追記したいのは、十、百、千、万を含んだ漢数字を数字変換する処理です。
二百→2*100
五→5
→205といった処理の実装がうまくいかず困っています。
基本的な事項についての質問ですが、ご教授いただけないでしょうか。
よろしくお願いします。
#漢字から数字へ変換
proc kanNum {s_stVal} {
set i_stval ""
if {$s_stVal == "一"} {
set i_stval "1"
}
if {$s_stVal == "二"} {
set i_stval "2"
}
if {$s_stVal == "三"} {
set i_stval "3"
}
if {$s_stVal == "四"} {
set i_stval "4"
}
if {$s_stVal == "五"} {
set i_stval "5"
}
if {$s_stVal == "六"} {
set i_stval "6"
}
if {$s_stVal == "七"} {
set i_stval "7"
}
if {$s_stVal == "八"} {
set i_stval "8"
}
if {$s_stVal == "九"} {
set i_stval "9"
}
if {$s_stVal == "十"} {
set i_stval "10"
}
if {$s_stVal == "百"} {
set i_stval "100"
}
if {$s_stVal == "千"} {
set i_stval "1000"
}
if {$s_stVal == "万"} {
set i_stval "10000"
}
set ret $i_stval
return $ret
}
#数字から漢字へ変換(計算結果)
proc numKan {s_ret} {
set result ""
if {$s_ret == "1"} {
set result "一"
}
if {$s_ret == "2"} {
set result "二"
}
if {$s_ret == "3"} {
set result "三"
}
if {$s_ret == "4"} {
set result "四"
}
if {$s_ret == "5"} {
set result "五"
}
if {$s_ret == "6"} {
set result "六"
}
if {$s_ret == "7"} {
set result "七"
}
if {$s_ret == "8"} {
set result "八"
}
if {$s_ret == "9"} {
set result "九"
}
if {$s_ret == "10"} {
set result "十"
}
if {$s_ret == "100"} {
set result "百"
}
if {$s_ret == "1000"} {
set result "千"
}
if {$s_ret == "10000"} {
set result "万"
}
set ret2 $result
return $ret2
}
#たす数たされる数を桁数分取得する処理
proc kResp {tmpchar} {
set len [string length $tmpchar]
set i 0
while {$i < $len} {
set tmpletter [string index $tmpchar $i]
incr i
set retRes [kanNum $tmpletter]
#if {$tmpletter == "一"} {
# set k_tal [expr $retRes * 100]
# append ret3 $k_tal
#} else {
append ret3 $retRes
#}
}
return $ret3
}
eval {
#ファイルパスの設定
set file_in "D:/tcl/Q.txt"
set file_out "D:/tcl/A.txt"
set iFile [open $file_in r]
while {[gets $iFile line] != -1} {
set lines(a) {}
#
if {[string match "*+*" $line]} {
set qstring [lindex [split $line "="] 0]
set s_stVal [lindex [split $qstring "+"] 0]
set s_stVal2 [lindex [split $qstring "+"] 1]
##計算value1
set n_forwa [kResp $s_stVal]
set r_kResp $n_forwa
puts $r_kResp
##計算value2
set n_forwa2 [kResp $s_stVal2]
set r_kResp2 $n_forwa2
puts $r_kResp2
##計算結果
set s_ret [expr $r_kResp + $r_kResp2]
puts $s_ret
set str3 $s_ret
set len3 [string length $str3]
set i 0
while {$i < $len3} {
set tmpchar3 [string index $str3 $i]
incr i
set sum [numKan $tmpchar3]
puts $sum
}
append r_result $sum
puts $r_result
}
lappend lines(a) "$line$r_result"
}
set oFile [open $file_out w]
foreach line $lines(a) {
puts $oFile "$line"
}
close $oFile
}
No.1ベストアンサー
- 回答日時:
値を表す文字 (「一」~「九」) と位取りを表す文字 (「十」や「百」, 「千」など) とは意味が違うんだから, まとめて処理しようとすると困るかもしれん.
まず「一」~「九」を数値に直す手続を作って, それを使って 9999 までを処理できるような手続を作る. そうすれば「万」, 「億」などと組合せて表すことができる全ての数値を変換することができる.
同じ質問が 2つの異なる ID から出ているのはなんでだろう. 「1人で複数の ID を使っちゃいけない」きまりだったはずなんだけど.... 双子とかかなぁ?
参考URL:http://oshiete.goo.ne.jp/qa/7926664.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Visual Basic(VBA) FileSearch2007に変わる構文について 1 2022/12/16 16:57
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php エラー 2 2022/10/23 16:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
.batでファイル名から抽出して...
-
コマンドプロンプトでファイル...
-
[DOS] コピー先に同じファイル...
-
コマンドプロンプトで変数が数...
-
window コマンドでファイルサイ...
-
ExcelVBAのDirでスペース含むフ...
-
フォルダ内の更新日時が一番新...
-
【DOSバッチ開発】末尾のタブの...
-
ftp処理でmove(移動)を行いたい
-
コマンドプロンプトまたはpower...
-
バッチファイルでファイルを置換
-
Windowsコマンドプロンプトで、...
-
バッチファイルで同一フォルダ...
-
ExifToolでの文字化け対策
-
バッチコマンドでファイル名の...
-
access,vbaでフォルダ内のファ...
-
batファイルでdirコマンドでフ...
-
ファイル名を該当フォルダ内か...
-
エクセルVBAを使用してJPGファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトでファイル...
-
バッチファイルで、iniファイル...
-
バッチコマンドでファイル名の...
-
コマンドプロンプトで変数が数...
-
[DOS] コピー先に同じファイル...
-
フォルダ内の更新日時が一番新...
-
ftp処理でmove(移動)を行いたい
-
ExcelVBAのDirでスペース含むフ...
-
.batでファイル名から抽出して...
-
DOSのバッチ作成について‐FORの...
-
access,vbaでフォルダ内のファ...
-
Windowsコマンドプロンプトで、...
-
【DOSバッチ開発】末尾のタブの...
-
word VBA ファイル名 保存
-
【vbs】ファイル名の検索と該当...
-
コマンドプロンプトまたはpower...
-
ファイル名を該当フォルダ内か...
-
バッチ処理で16進数でファイル...
-
スタートアップのファイルをバ...
おすすめ情報