dポイントプレゼントキャンペーン実施中!

現在、BASICの勉強を独学でしていますが、なかなか理解ができないでいて困っています。
4行4列の2つの行列A、Bの積を計算するプログラムを書きたいのですが、どのように書けばよいのか教えていただけないでしょうか?
DIM文を使うことはわかるのですが、使い方がよくわからないでいます。
よろしくお願いします。

A 回答 (1件)

現在の話ですから、BasicというのはVisual Basicの事だと思っていいんでしょうか?


DIM文はもともとはdimension=次元を表し、配列の宣言専門のステートメントだったと聞いた事
があります。
それはさておき、本題に入ります。

【DIM文の使い方】

変数を宣言するステートメントです。
特に配列に関しては、配列の最大の添え字を宣言できると考えた方がいいでしょう。

1)----------------------------------
(Option Base 0)※Option Baseを宣言しないと添え字を0からと解釈する。

Dim x(3) As Integer
Dim x(0 to 3) As Integer

2)----------------------------------

Option Base 1
Dim x(4) As Integer

3)----------------------------------

Dim x(1 to 4) As Integer

------------------------------------

1)~3)まで、要素を4つとるという点では差がありません。1)はx(0)が要素としてあるので要素数は4です。

2)と3)は添え字1~4をとるという意味で等価です。
1)は、添え字を0~3でとるという意味で他の二つとはちょっと違います。

以上は、一次元の配列なので、行列のような二次元以上の配列を宣言する場合には
Dim x(一次元目の添え字宣言、二次元目の添え字宣言、・・・)
となります。

実際,行列を宣言する場合には、4行4列の行列であれば、

Dim matrix(3,3)
Dim matrix(0 to 3,0 to 3)

Option Base 1
Dim matrix(4,4)
Dim matrix(1 to 4,1 to 4)

になります。

行列としてみる場合には、一次元目が行、二次元目が列です。

【行列の計算】

行列Aと行列Bの積は、Aの列数とBの行数が等しい時に計算可能です。
行列Aの成分をAlc、Bの成分をBlc、積ABの成分をClcで表すと
(Xlc l:何番目の行か、c:何番目の列か と定義します。)

Clc = Al1*B1c +Al2*B2c・・・Alx*Bxc  (xは、Aの列数とBの行数)

という式で積ABの要素は求められます。
積ABの要素Cが行(l)、列(c)の二つの項目を持っているのでそれでを特定するため、まずループ
が二重に必要です。
そしてその要素一つについて、加算のためのループが必要なので、合計ループは三重です。

試みに書いたのは、以下のような感じです。

Dim A(0 To 3, 0 To 3) As Integer
Dim B(0 To 3, 0 To 3) As Integer
Dim AB(0 To 3, 0 To 3) As Integer

Sub main()
  Dim i, j, k, sum As Integer
  Dim msg As String

  '行列の初期化処理を行う

  '行列の計算を行う
  For i = 0 To 3
    For j = 0 To 3
      sum = 0
      For k = 0 To 3
        sum = sum + A(i, k) * B(k, j)
      Next k
      AB(i, j) = sum
    Next j
  Next i

End Sub

以上、参考までに。
    • good
    • 1
この回答へのお礼

配列のとり方にはいくつかのやり方があることがわかりました。
とても、丁寧な説明ありがとうございました。
とても、わかりやすかったです。
また、自分でも試してみたいと思います。

お礼日時:2006/10/26 09:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A