第6講 配列
第4話 2次元配列具体例
(データは毎回異なります。)
を実現するプログラム例
//以下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]);
//1桁の場合
if(a[i,j] >= 10)Console.Write("{0:d} ", a[i, j]);
//2桁の場合
}
Console.WriteLine(); //改行
}
}
}
}
さて、の左右を反対にする、すなわち中央のところで線対称変換をさせたもの
も表示させるとすると、
//以下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]);
//1桁の場合
if(a[i,j] >= 10)Console.Write("{0:d} ", a[i, j]);
//2桁の場合
}
Console.WriteLine();
}
Console.WriteLine();
//左右反転の表示
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 4; j++)
{
if (a[i, 3 - j] < 10) Console.Write(" {0:d} ", a[i,
3 - j]); //1桁の場合
if (a[i, 3 - j] >= 10) Console.Write("{0:d} ", a[i,
3 - j]); //2桁の場合
}
Console.WriteLine();
}
}
}
}
とします。
さて、のような数字の並びを行列といいます。
行は横列、列は縦列を表します。
ですから、この行列を3行4列の行列といいます。
そして、行と列を反対にした(縦横を取り換えた)
を転置行列といいます。
もとの行列・左右反転した行列・上限反転した配列・転置行列
のすべてを表示させるプログラムを考えて下さい。
転置は難しいですが粘り強く考えて下さい。
(データは毎回異なります。)