A 回答 (7件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
機械じゃないんだから、一問一答ではなくて、あなたの考えを聞かせてよ。
入れる箱の数が足りないんです。あなたなら、どうしますか?
3次元配列はルービックキューブのような形をしています。
2次元配列はエクセルの表のようなデータの形をしています。
全部移したいなら、2次元配列の配列サイズ数を、行方向か列方向に増やすしかありません。
data2[500][500x4000]とするかdata2[500x4000][500]とする。
3次元データと2次元データを図として簡単に手書きしてみて、
移すにはどうやったらいいか、イメージして下さい。
そうすれば、こんなコードにはならないはずです。
No.4
- 回答日時:
1つの箱には1つのリンゴしか入りません。
ここに、リンゴが1つづつ入った、8つの箱があります。
この8つのリンゴを、リンゴが入っていない4つの箱にすべて移してください。
razio915さんは、この問題を数学的に解けますか?
razio915さんが、求めているのは、これとまったく同じです。
何かの条件を変えない限り、すべてのデータを移すことは不可能です。
No.5
- 回答日時:
★アドバイス
・この質問は『3次元配列データを2次元配列データとして扱いたい』であっていますか?
もしもそうであればポインタを使って簡単にアクセスできます。
ただし『data3[500][500][4000]』の構造がちょっと問題ありそうです。
・例えば横640×縦480の画像を10枚管理する構造ならば
image[10][480][640]という3次元配列で一般的に表現します。
でも中にはimage[640][480][10]という3次元配列で表現する方もいます。
両方とも3次元配列ですしちゃんと『横640×縦480の画像を10枚』を管理できます。
しかしimage[640][480][10]という構造の場合はポインタを使って2次元配列の
データとして簡単にアクセスできないです。
・もしも『data3[4000][500][500]』という構造で3次元配列データを表現できるなら
ポインタを使って簡単に2次元配列データとしてアクセスできます。
例:
type data3[4000][500][500];
type (*data2)[500][500];
// セット
data2 = ((*)[500][500])data3;
// アクセス
for ( y = 0 ; y < 500 ; y++ ){
for ( x = 0 ; x < 500 ; x++ ){
printf( "%d\n", data2[y][x] );
}
}
上記の方法で3次元配列データを2次元配列データと同じようにアクセスできます。
最後に:
質問のタイトルである『3次元配列から2次元配列に』の意味をもう少し詳しく
書いた方がより適切な回答が得られると思います。私は上記の方法を行いたいと
勝手に解釈して回答を書き込みました。もし違っている場合は何を行いたいか
より詳しい補足を書いて下さい。
・ちなみに『3次元配列から2次元配列にコピー』なら上記の方法でdata2ポインタを
利用して2次元配列にコピーして下さい。
この回答への補足
丁寧なご回答ありがとうございます.
3次元配列にはdata[画像の縦の幅][画像の横の幅][輝度値]
になっています.
3次元である処理を行った後に,2次元配列に代入したいのです.
(メモリの関係上)
No.6
- 回答日時:
★もっと詳しく補足して下さい。
・補足内容を読んでみましたがまだ不十分なため何を行いたいかが
こちらではわかりません。
>3次元配列にはdata[画像の縦の幅][画像の横の幅][輝度値]
↑
構造は分かりました。
しかし『輝度値』の添え字数が 4000 ってどいうことですか?
そもそも配列の『型』は何ですか?
あと2次元配列に代入するときにどの情報を代入したいのですか?
・普通画像の輝度は long data[縦幅][横幅]=[輝度値] という感じになると思います。
なぜ『輝度値』の添え字数が 4000 なのでしょうか?
ここが一番不思議です。
前後の処理とソースなどを補足して欲しいです。
この回答への補足
すみません.
正確には4096です.
配列の型はunsigned short型としています.
3次元配列はmallocで動的にメモリを確保しています.
Oh-Orangeさんの言うとおり,
long data[縦幅][横幅]=[輝度値]
このように2次元配列にしようと思っています.
No.7
- 回答日時:
補足要求です。
>3次元配列には data[画像の縦の幅][画像の横の幅][輝度値]になっています.
たとえば、最初の点(BMPですと画像左下)で、
data3[ 0 ][ 0 ][ 0 ] = A;
data3[ 0 ][ 0 ][ 1 ] = B;
・
・
data3[ 0 ][ 0 ][ 4044 ] = C;
data3[ 0 ][ 0 ][ 4045 ] = D; としたとき、
☆ A, B, C, D は、具体的に「何」になるのでしょうか?「輝度」に関係するものですか?
>long data[縦幅][横幅]=[輝度値]
>このように2次元配列にしようと思っています.
☆unsigned short型で扱えていたものを、long型に格納するのですか?
--------------------------------------------------
普通?に考えれば、
画像の1点につき、輝度値範囲全ての「配列を用意」する必要はなく、輝度値そのものを「配列に格納」する。
でよろしいかと・・。
>3次元配列は malloc で動的にメモリを確保しています.
data3[ 500 ][ 500 ][ 4 ] でメモリ確保すればよいのでは・・。
#define RED 0
#define GRN 1
#define BLU 2
#define KID 3
・
・
data3[ y ][ x ][ RED ] = R値
data3[ y ][ x ][ GRN ] = G値
data3[ y ][ x ][ BLU ] = B値
data3[ y ][ x ][ KID ] = 輝度値
・
(輝度値に関し、「2」次元である処理?)
・
for( y = 0; y < 500; y++ ){
for( x = 0; x < 500; x++ ){
data2[ y ][ x ] = data3[ y ][ x ][ KID ];
}
}
もちろん、RGBを別の配列で扱うなら、2次元配列で十分。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- Visual Basic(VBA) ExcelVBAで質問です。離れた二次元配列を一つにしたい 4 2022/07/26 19:06
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- その他(プログラミング・Web制作) python の2次元配列のメリットを教えて下さい。 2 2023/06/29 10:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
DBから取得した値を配列へ代入する
-
C#でbyte配列から画像を表示さ...
-
構造体配列の一部初期化!!!
-
エクセルでXY座標に並べられた...
-
VB6で、一次元配列と二次元配列...
-
定数配列の書き方
-
配列の中の最大値とそのインデ...
-
オブジェクト名を変数で参照で...
-
配列の要素がすべてカラかどう...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
ActiveReports(アクティブレポ...
-
VB.NETの配列にExcelから読み込...
-
VBで配列に格納されているデー...
-
8bitインデックス画像の入出力方法
-
Redim とEraseの違いは?
-
VBでの配列をEXCELに出力する方法
-
EXCEL VBA 配列デー...
-
Excel2010のinputboxで複数デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報