ページ 1 / 1
数字の足し算
Posted: 2008年4月12日(土) 16:07
by 雷電
どうもお久しぶりです・・・。
受験が終り、高校にやっとなれはじめた雷電です。
今回は、文字から変更した数字についてです。
文字列を数字に変更する関数はVal関数でいいのですが、
その変更した後、変更された数字を足し算したいのです。
例えば、文字列が12345だとすると、
1+2+3+4+5の計算をしたいのです。
一字ずつ切り出して、計算したいのですが、どなたかご教授ください・・・
文字列の抽出演算
Posted: 2008年4月12日(土) 18:42
by omasu
お世話になります。
突貫プログラムです。
バグがあったら報告願います。
コード: 全て選択
#N88BASIC
Dim Mojiretu$ As String
Dim Kotae As Long
Dim q As String
Mojiretu$="0123456789"
Kotae=MojiCal(Mojiretu$,0)
Print Kotae
Input "終了しました。(Hit Enter Key)";q
End
Function MojiCal(Mojiretu$ As String,Kotae As Long) As long
Dim Mojisuu As Long
Dim i As Long
Mojisuu=Len(Mojiretu$)
For i=1 To Mojisuu
Kotae=Kotae+Val(Mid$(Mojiretu$,i,1))
Next i
MojiCal=Kotae
End Function
Posted: 2008年4月12日(土) 18:58
by konisi
文字列を数値に変換した後に作業をするので、下でもいいと思います。
コード: 全て選択
#console
Dim Strings As *Byte
Strings="0123456789"
Print Calc_AddPlace(Val(Strings))
Print Calc_AddPlace(123456789)
Sleep(-1)
Function Calc_AddPlace(src As DWord) As DWord
Dim dst=0 As DWord
While src
dst=dst+(src Mod 10)
src=src\10
Wend
Calc_AddPlace=dst
End Function
数字の足し算
Posted: 2008年4月12日(土) 19:35
by tks
コード: 全て選択
#prompt
2 Dim A As Long'数字の入力用
3 Dim B As Long'数字の計算用
4 Dim C As Long'数字の表示用
5 A=0:C=0
6 Input "数字を入力してください";A
7 For B=1 TO A
8 C=C+B
9 NEXT
10 PRINT"答えは";C'答えの表示
11 GOTO 5
end
Posted: 2008年4月12日(土) 20:23
by konisi
>>tks
文字列を数字と見なした時の各桁の値の合計を求めるのが雷電さんの目的だと思ったのですが、
何かやってることが違うように見えます。
文字列から数値を抽出して合計する
Posted: 2008年4月12日(土) 20:56
by omasu
お世話になります。
konisiさんにはいつも勉強させられます。
tksさんのプログラムは10を入力すると1~10までの合計55が答え、
例えが「1+2+3+4+5の計算をしたいのです」どおりですね。
ちょっと拡大解釈しすぎの2桁対応バージョンも作ってみました。
「カンマ区切りの不定長桁数もありかな?」
コード: 全て選択
#N88BASIC
Dim Mojiretu$ As String
Dim Kotae As Long
Dim q As String
Mojiretu$="00112233445566778899"
Kotae=MojiCal(Mojiretu$,0)
Print Kotae
Input "終了しました。(Hit Enter Key)";q
End
Function MojiCal(Mojiretu$ As String,Kotae As Long) As long
Dim Mojisuu As Long
Dim i As Long
Mojisuu=Len(Mojiretu$)
For i=1 To Mojisuu Step 2
Kotae=Kotae+Val(Mid$(Mojiretu$,i,2))
Next i
MojiCal=Kotae
End Function
Posted: 2008年4月12日(土) 21:15
by 雷電
多数の返信ありがとうございます。
一応できましたww
ありがとうございましたw
Posted: 2008年4月12日(土) 21:28
by konisi
ちょっと遅れましたがCSV版を作れとの事なので作ってみました。
コード: 全て選択
#console
Dim Strings As *Byte
Strings="23,432,54,2,0,123,-43"
Print Calc_AddCSV(Strings)
Sleep(-1)
Function Calc_AddCSV(src As *Byte) As Double
Dim src$ As String,find_old=1 As Long,find=-1 As Long
Dim dst$ As String,dst=0 As Double
src$=MakeStr(src)
Do
find=InStr(find_old,src$,",")
If find then
dst$=Mid$(src$,find_old,find-find_old)
dst=dst+Val(dst$)
find_old=find+1
Else
dst$=Mid$(src$,find_old,Len(src$)-find_old+1)
dst=dst+Val(dst$)
Exit Do
End If
Loop
Calc_AddCSV=dst
End Function
文字列から数値を抽出し計算(CSV版)について
Posted: 2008年4月12日(土) 22:48
by omasu
お世話になります。
> ちょっと遅れましたがCSV版を作れとの事なので作ってみました。
おみそれしました。
これって、実践コードモジュールに登録できるのでは?
参考になります。
ありがとうございました。