人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C#.netで、二次元配列のデータ群を一次元配列に変換するコードを書きたいのですが、

1.ズバリなコードを書いていただいた方には50ポイント
2.参考になるURLをご紹介いただいた方には15ポイント

差し上げたいと思います。

なお、一次元に配置し直すルールは、左から列を優先にソートしなければなりません。

具体的には、
1 3 2 3
7 5 7 9
1 4 6 8
という二次元のとき、
1 7 1 3 5 4 2 7 6 3 9 8
という一次元に置き換えたいのです。

よろしくお願いします。

●質問者: expansion05
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:.NET C# コード ズバリ ソート
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● cx20
●65ポイント

http://www.microsoft.com/japan/msdn/library/ja/jpdnbcsharp/htm/c...

2-4 ??????

こんな感じでいかがでしょう?

static void Main(string[] args)

{

int[,] dataArray = {{1, 3, 2, 3},

{7, 5, 7, 9},

{1, 4, 6, 8}};

int n0 = dataArray.GetLength(0);

int n1 = dataArray.GetLength(1);

Console.WriteLine( ”n0 = {0}”, n0 );

Console.WriteLine( ”n1 = {0}”, n1 );

int [] data = new int[n0*n1];

for ( int x = 0; x < n1; x++ )

{

for ( int y = 0; y < n0; y++ )

{

data[y+x*n0] = dataArray[y,x];

}

}

for ( int i = 0; i < data.Length; i++ )

{

Console.WriteLine(”data[{0}] = {1}”,i, data[i]);

}

}

◎質問者からの返答

ありがとうございます。大変参考になります。


2 ● polyamid
●65ポイント

http://slashdot.jp/

スラッシュドット ジャパン : アレゲなニュースと雑談サイト

using System;

namespace DefaultNamespace

{

class MainClass

{

public static void Main(string[] args)

{

int[,] mysquare = {{1,2,3},{4,5,6},{7,8,9}};

int [] mylist = new int[mysquare.Length];

for (int i=0;i<mysquare.Length;i++){

mylist[i] = mysquare[i%mysquare.GetLength(0) , (int)(i/mysquare.GetLength(1))];

}

for (int i=0;i<mylist.Length;i++){

Console.Write(mylist[i]);

}

Console.WriteLine(” :-)”);

}

}

}

こんな感じでいかがでしょう。

◎質問者からの返答

おースリム&スマート。

この発想はありませんでした・・ちょっと試してみます^^


3 ● last_wednesday
●65ポイント

http://www-ise2.ise.eng.osaka-u.ac.jp/~iwanaga/programming/cshar...

配列 (C# によるプログラミング入門)

URLは配列の解説ページです。

2次元配列について。

{{1, 3, 2, 3}, {7, 5, 7, 9}, {1, 4, 6, 8}}(int[3, 4])を、{1, 7 ,1, 3, 5, 4, 3, 7, 6, 3, 9, 8}(int[12])に変換します。

int[,] matrix = new int[行,列];

--値を代入--;

int row = matrix.GetLength(0);

int col = matrix.GetLength(1);

int[] array = new int[row*col];

for(int i=0; i<col; i++){

for(int j=0; j<row; j++){

array[row*i+j] = matrix[j,i];

}

}

こんな感じでどうでしょうか?

◎質問者からの返答

GetLengthの使い方は大変参考になりました。

皆さん頭の言い方ばかりで、素敵です!

イメージが形になりましたので、これにてお開きとさせていただきます。どうもありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ