第7講 多次元配列と1次元配列の関係
第1話 多次元配列の正体
001
を1次元配列で実現することは可能だと思いますか。

もちろん、慧眼な読者は『多次元配列と1次元配列の関係』という講のテーマ名から、
可能にちがいないと考えますよね。
その通りです。
いきなり、3次元配列と1次元配列の関係を考えるのでは複雑ですから、
2次元配列と1次元配列の関係から考えましょう。
第6講第3話で
配列は
     int[,] a = new int[3,4]; //2次元配列の宣言
とすると、2次元配列となります。
2次元という意味は、
a[0,0],a[0,1],a[0,2],a[0,3],
a[1,0],a[1,1],a[1,2],a[1,3],
a[2,0],a[2,1],a[2,2],a[2,3]
と縦と横を持つ配列になるからです。

と書きましたが、本当は少しレトリック[過剰表現または粉飾)があります。
だって本当は、メモリ上では
a[0, 0],a[0, 1],a[0, 2],a[0, 3],a[1, 0],a[1, 1],a[1, 2],a[1, 3],a[2, 0],a[2, 1],a[2, 2],a[2, 3]
と並んでいるのですから。
これって1次元ですよね。
だったら、第6講第4話の

001
(データは毎回異なります。)

を実現するプログラム例
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
  class Program //初心者はお呪い=決まり事と思い一切気にしない
  {
    static void Main(string[] args) //私は社長だ。
    {
      f();
    }
    static void f()
    {
      int[,] a = new int[3,4];
      Random r = new Random();
      for (int i = 0; i < 3; i++)
      {
        for (int j = 0; j < 4; j++)
        {
          a[i, j] = r.Next(100);
        }
      }
      for (int i = 0; i < 3; i++)
      {
        for(int j = 0; j < 4; j++)
        {
          if(a[i,j] < 10)Console.Write(" {0:d} ", a[i, j]);
          if(a[i,j] >= 10)Console.Write("{0:d} ", a[i, j]);
        }
        Console.WriteLine();
      }
    }
  }
}
の2次元配列
      int[,] a = new int[3,4];
は1次元配列
      int[] a = new int[*];
に変更しても実現できるはずです。
では、要素数*はいくつですか。
答えは30行下に示します。































答え
001
を見れば要素数
*は、3×4=12であることがわかります。
もうおわかりであるとは思いますが、
      int[] a = new int[12];
で配列が定義されたときには、
a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],a[10],a[11]
の12個の添え字付き変数が用意されます。
最後がa[11]であることに注意が必要です。
VBでは、
  Dim a[12] As Integer
と宣言された場合には、
a(0),a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9),a(10),a(11),a(12)
と最後がa(12)であり、添え字付き変数が13個用意されるのとは異なります。
C++とVBを足して2で割ったものが、C#であるために、
ときにはVBと同じであり、ときにはC++と同じです。
今回は、C++と同じですね。
      int[] a = new int[12];
と宣言しておいて、
      a[12]=5;
などと書くとエラーします。
注意が必要です。
では、001を1次元配列で実現して下さい。

第6講第8話へ   第2話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ