第7講 多次元配列と1次元配列の関係
第8話 3次元配列と1次元配列の関係
例えば、
      int[,,] a = new int[3,4,2]; //3次元配列
と3次元配列を宣言すると、
メモリ上ではデータは次のように並びます。
a[0,0,0],a[0,0,1],a[0,1,0],a[0,1,1],a[0,2,0],a[0,2,1],a[0,3,0],a[0,3,1],
a[1,0,0],a[1,0,1],a[1,1,0],a[1,1,1],a[1,2,0],a[1,2,1],a[1,3,0],a[1,3,1],
a[2,0,0],a[2,0,1],a[2,1,0],a[2,1,1],a[2,2,0],a[2,2,1],a[2,3,0],a[2,3,1]
(実際上は直線です。表示しきれないので3行になっていますが。)
これを参考にして、次のコード
//以下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,2]; //3次元配列
      Random r = new Random(); //乱数の発生
      //データ生成
      for(int i = 0; i < 3; i++)
      {
        for(int j = 0; j < 4; j++)
        {
          for (int k = 0; k < 2; k++)
          {
            a[i, j, k] = r.Next(10);
          }
        }
      }
      //データ表示
      for (int i = 0; i < 3; i++)
      {
        for (int j = 0; j < 4; j++)
        {
          for (int k = 0; k < 2; k++)
          {
            Console.Write("{0:d} ", a[i, j, k]);
          }
          Console.WriteLine(); //改行
        }
        Console.WriteLine(); //改行
      }
    }
  }
}
001
を1次元配列を使ったコードに書き直して下さい。
解答例は30行下。






















解答例
//以下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[24]; //3次元配列
      Random r = new Random(); //乱数の発生
                   //データ生成
      for (int i = 0; i < 3; i++)
      {
        for (int j = 0; j < 4; j++)
        {
          for (int k = 0; k < 2; k++)
          {
            a[8 * i+ 2 * j + k] = r.Next(10);
          }
        }
      }
      //データ表示
      for (int i = 0; i < 3; i++)
      {
        for (int j = 0; j < 4; j++)
        {
          for (int k = 0; k < 2; k++)
          {
            Console.Write("{0:d} ", a[8 * i + 2 * j + k]);
          }
          Console.WriteLine(); //改行
        }
        Console.WriteLine(); //改行
      }
    }
  }
}

では、第9話の課題です。
データ作成もデータ表示も1次元For文で行って下さい。


第7話へ   第9話へ

002

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

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