【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net (435レス)
前次1-
抽出解除 レス栞

23
(4): 2017/01/27(金)20:21 ID:tSNcnN0K(1) AAS
>>21-22 よくわかんないけと゛、Type 命令文関係を見てみます。

虚数演算と同じファイルに放り込んでおいたのが、整数演算。
'外部リンク[htm]:rucio.a.la9.jp
で見つけた内容をコピーしただけのルーチン(何やっているのかわからなかった)がいくつか。
で、問題は
Function LCM(ParamArray Values() As Variant) As Long
の「ParamArray 」、の部分。これに対応できるらしい命令が
Function Overload 系処理。
外部リンク[html]:makoto-watanabe.main.jp
外部リンク[html]:makoto-watanabe.main.jp

Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long, InA3 As Long) As Long
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long) As Long
Declare Function AAAA(InA() As Long) As Long

と、OverLoad 句のついている Declare を先に、ついていないDeclare文を後ろにと、並べないとエラーになる。
間に別の名称の文を入れても解釈してくれるみたい。
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long, InA3 As Long) As Long
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long) As Long
Declare Function BBBB(InA() As Long) As Long
Declare Function AAAA(InA() As Long) As Long
24
(2): 2017/01/28(土)08:41 ID:fbuNIeJW(1/6) AAS
>>23
独自に定義した関数をオーバーロードする設計なら「全て」の同名関数にoverloadは付けるべき
複数のヘッダファイルに同名関数のオーバーロード宣言を書いた時
インクルード次第で多重定義のエラーになる可能性がある
更にその関数にはオーバーロードされた関数が別に存在することが分かる

>内容をコピーしただけのルーチン(何やっているのかわからなかった)がいくつか。
褒められたものじゃないなあ
最小公倍数のアルゴリズム位は理解しておこうよ
26
(2): 2017/01/28(土)13:46 ID:fbuNIeJW(2/6) AAS
>>25
整数a, bの最小公倍数をLCM(a, b)とし、最大公約数をGCD(a, b)すると
整数a, bの最大公約数と最大公倍数の積が整数a, bの積に等しいという定理から
LCM(a, b) = a * b / GCD(a, b)
となる
>>23のリンク先の関数は、n個の整数の最大公倍数LCM(n1 , n2 ...) を求める関数
単に上記をn個分ループしているだけ

上記の定理の証明が知りたいならググってくれ、幾らでも見つかる
33
(1): 2017/01/29(日)06:11 ID:ElqR2hUp(1/7) AAS
>>23 つづき。
Declare Function IniFileRead OverLoad(FileString As String, SecNameString As String, KeyNameString As String, ByRef KeyValString As String) As Wata
(一致部分略), ByRef KeyValLong as Long) As Wata
, ByRef KeyValDouble As Double) As Wata
, ByRef KeyValShort As SHORT) As Wata
, ByRef KeyValSingle as Single) As Wata
, ByRef KeyValByte As Byte) As Wata
, ByRef KeyValInteger As Integer) As Wata
, ByRef KeyValLongint As Longint) As Wata
, ByRef KeyValLong as ULong) As Wata
, ByRef KeyValShort As USHORT) As Wata
, ByRef KeyValByte As UByte) As Wata
, ByRef KeyValInteger As UInteger) As Wata
, ByRef KeyValLongint As ULongint) As Wata
, ByRef KeyValString As ZString) As Wata
, ByRef KeyValString As WString) As Wata
Declare Function IniFileRead OverLoad(FileString As String, SecNameString As String, KeyNameString As String, ByRef KeyValBool As Boolean) As Wata
と宣言して、
BString =DataKeyName + str$(ICC)
TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, BString, CString)
TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, DataKeyName + str$(ICC), SoseFileList(ICC))
と参照したら
..\Kako02\Mod\Taka05.bas(3439) error 97: Ambiguous call to overloaded function, INIFILEREAD() in 'TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, BString, CString)'
..\Kako02\Mod\Taka05.bas(3440) error 97: Ambiguous call to overloaded function, INIFILEREAD() in 'TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, DataKeyName + str$(ICC), SoseFileList(ICC))'
とエラーになった。
内容を調べていない。
使わない(使い方がわからない)変数型を消してみてどうなるか、
面倒だと思ったらば、Overload化をやめて元の状態に戻す予定。
38
(3): 2017/01/29(日)12:57 ID:ElqR2hUp(5/7) AAS
>>23 Type 命令文関係を見てみます。
のつづき。Type みてもわからなかったので、逃げの九素コードを
大域宣言は
'複素数(虚数)計算 '(2017.01.29 済)名称変更 Conplex → Complex
Type Complex
RealPart As Double
ImagPart As Double
End Type
で。ご指摘の通り、n → m への変更済み。
外部リンク[html]:makoto-watanabe.main.jp より、
関数は、Byref As return_type を指定して、参照を返すこともできます。
とあるので、破壊されない戻り値を保管する場所が必要。
局所ルーチンで参照され、破壊されない戻り値の保管場所は、九素コードとして、大域変数を使う。
Dim Shared ComComplexVal As Complex
関数としては単なるLET文を用意した。
Function TekiToComp(Aval As Complex) ByRef As Complex
ComComplexVal.RealPart = Aval.RealPart
ComComplexVal.ImagPart = Aval.ImagPart
TekiToComp = ComComplexVal
End Function
参照側で
ComComplexVal.RealPart = -5.0: ComComplexVal.ImagPart = -0.5
Complex1Val.RealPart = 1.0: Complex1Val.ImagPart = 0.1
Complex2Val.RealPart = 2.0: Complex2Val.ImagPart = 0.2
と定義して
Complex2Val = TekiToComp(Complex1Val)
関数を実行、3つの変数すべてが Complex1Val の値で一致する。
ここで、ComComplexValに適当な値を設定しても、Complex2Val の値が変化しなかった。
参照渡しと言っても、Complex2Valのアドレス(ポインター)をComComplexValのソレに書き換えるのではなかった。
3つの変数の保存領域は独立して存在する。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.390s*