数字の足し算

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
雷電
記事: 104
登録日時: 2006年8月21日(月) 14:26
お住まい: 兵庫県
連絡する:

数字の足し算

#1 投稿記事 by 雷電 »

どうもお久しぶりです・・・。
受験が終り、高校にやっとなれはじめた雷電です。

今回は、文字から変更した数字についてです。
文字列を数字に変更する関数はVal関数でいいのですが、
その変更した後、変更された数字を足し算したいのです。

例えば、文字列が12345だとすると、
1+2+3+4+5の計算をしたいのです。
一字ずつ切り出して、計算したいのですが、どなたかご教授ください・・・
===============================
MyHomePage;; raiden.no.land.to/
===============================
omasu
記事: 96
登録日時: 2005年9月02日(金) 22:15
連絡する:

文字列の抽出演算

#2 投稿記事 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
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#3 投稿記事 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
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
tks
記事: 1
登録日時: 2008年4月12日(土) 18:44

数字の足し算

#4 投稿記事 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
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#5 投稿記事 by konisi »

>>tks
文字列を数字と見なした時の各桁の値の合計を求めるのが雷電さんの目的だと思ったのですが、
何かやってることが違うように見えます。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
omasu
記事: 96
登録日時: 2005年9月02日(金) 22:15
連絡する:

文字列から数値を抽出して合計する

#6 投稿記事 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
雷電
記事: 104
登録日時: 2006年8月21日(月) 14:26
お住まい: 兵庫県
連絡する:

#7 投稿記事 by 雷電 »

多数の返信ありがとうございます。
一応できましたww

ありがとうございましたw
===============================
MyHomePage;; raiden.no.land.to/
===============================
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#8 投稿記事 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
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
omasu
記事: 96
登録日時: 2005年9月02日(金) 22:15
連絡する:

文字列から数値を抽出し計算(CSV版)について

#9 投稿記事 by omasu »

お世話になります。

 > ちょっと遅れましたがCSV版を作れとの事なので作ってみました。

おみそれしました。

 これって、実践コードモジュールに登録できるのでは?

参考になります。

 ありがとうございました。
返信する