• 締切済み

配列の中の行移動方法

画面上に下記の表があります。 項目番号 項目A   配列番号 項目B   1     AA1     1     BB1                 2     BB2                 3     BB3                 4     BB4   2     AA2     1     BC1                 2     BC2                 3     BC3 項目番号1の配列番号4(BB4)を配列番号2(BB2)の上に移動させるロジックを考えています。 移動は同じ項目番号の中だけで行うようにします。 できるだけシンプルに作りたいのですが、 参考になるコーディング例がありましたら教えてください。

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

LinkedListでadd(index2,remove(index4))をすればいいと思う

Horirin39
質問者

お礼

お礼が遅くなりました。 ご回答ありがとうございました。 おかげさまで何とか解決できました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 配列の数を途中で増やすには?

    はじめまして。 この度、以下のようなプログラムを作りました。 が、途中で配列の数を増やすことになってしまいました。 ------------------------------------------------ struct a{ int int_a; long int_b; }; struct b{ a *aa; }; void main(void){ b *bb; bb = new b[3]; bb[0].aa = new a[5]; bb[1].aa = new a[4]; . . . } ------------------------------------------------ 具体的には、'bb'の配列を3から5に増やすようなやり方を探しています。 元の配列より大きい配列をつくり、そこにコピーすればいいと考えたのですが、 'bb'内の'aa'の配列も動的に作成しているため、それも出来ない状況です。 どなたかやり方を知っている方がいましたら、教えていただきたいです。 下手な説明ですいません。

  • 3つの連想配列を交互に代入して、新しい連想配列を作りたい

    PHP Version 5.1.6を使っています。 それぞれの連想配列を先頭から順番に交互に代入したいのですが、 どのようなプログラムでできるのでしょうか? $arr1 = array(a1=>"aa1", a2=>"aa2", a3=>"aa3"); $arr2 = array(b1=>"bb1", b2=>"bb2", b3=>"bb3"); $arr3 = array(c1=>"cc1", c2=>"cc2", c3=>"cc3"); 代入後 $new_arr = array(  a1=>"aa1",  b1=>"bb1",  c1=>"cc1",  a2=>"aa2",  b2=>"bb2",  c2=>"cc2",  a3=>"aa3",  b3=>"bb3",  c3=>"cc3", );

    • ベストアンサー
    • PHP
  • 各配列の要素番号で、別の配列に移動する変換?

    おはようございます。 たとえば、DBからの検索結果でStringの配列が80個 返ってきたとします。各配列は30個くらいです。 ■イメージの例(検索結果の代わりの配列) 1)  String[]   結果1  =  new  Stirng[30]; 2)  String[]   結果2  =  new  Stirng[30]; ・ ・ 3)  String[]   結果80  =  new  Stirng[30]; この検索結果を別のStringの配列に移動したいのです。 その際に、検索結果のStringの配列が80個あるのですが 結果1 ~~結果40までの40個をまず別のStringの 配列に移動します。残りの結果41~~結果80までを別の配列に移動します。 さらに、40個の配列を移動する際には、各配列の[0]を1つの 配列に、[1]を1つの配列に・・と言う具合に移動したいのです。 ■イメージ //移動開始 移動先1[0]  =  結果1[0] 移動先1[1]  =  結果2[0] 移動先1[2]  =  結果3[0] ・ ・ 移動先1[39]  =  結果40[0] 移動先2[0]  =  結果41[0] 移動先2[1]  =  結果42[0] ・ ・ 移動先2[40]  =  結果80[0] ・ ・ 移動先29[39]  =  結果40[0] ・ ・ 移動先30[79]  =  結果80[30] //移動終了 返ってきた検索結果セットの各配列の[0]や[1]の単位で 別の配列に移動したいのです。 どのようにすれば、うまくロジックが書けますでしょうか? アドバイス、よろしくお願い致します。

    • ベストアンサー
    • Java
  • コンパイラの授業課題で分からない問題があります。教えてください

    「簡単な例」の仕様を各自で拡張し(少なくとも2項目)、それが処理できるようにスキャナソース、パーザソースを作成せよ。 仕様の拡張の例としては、例えば次のようなものがある(が、これらの例以外を行うこと)。 変数に、さらに"PP", "QQ"が使えるようにする。プログラム例は下記の通り。 A=3*4-4; PP=A*A; QQ=PP+A; print PP; print QQ; print文の文法に、複数(任意個)の変数が使えるような拡張する。プログラム例は下記の通り。 A=3*4-4; B=A*A; print A, B; 冪乗計算(**)が使えるようにする。 A=10; B=3; C=A**B; print C; いくつかの初等関数(sqrtなど)が使えるようにする。 A=10*10; B=sqrt(A); print B; 「簡単な例」を参考に、 1次元配列を使えるようにするにはどのようにソースを変更すれば良いか考えよ。なお、配列は"dimension"を使って宣言する。配列名は"AA","BB","CC","DD"に限定する。 dimension AA[3]; A=9; B=2; AA[0]=2; AA[1]=A*A; AA[B]=A*A*A; print AA[0]; print AA[1]; print AA[2]; お願いします。

  • 行を列に

    項目A 項目B 項目C 項目D 項目E 項目F 1000  AA  ああ  ABC 1001  BB  いい  XXX  YYY  ZZZ      ↓↓↓    項目A 項目B 項目C 項目Z 1000  AA  ああ  ABC 1001  BB  いい  XXX 1001  BB  いい  YYY 1001  BB  いい  ZZZ という形に出力したいのですが、いい方法はありますでしょうか。 クロス集計だと一つの列に対して複数行は出せたのですが 複数列を複数行にすることができませんでした。 UNIONと直積を使用せずにAccessで実現することは可能でしょうか。   

  • bashで配列の個数部分を変数で指定するとエラーに

    bashで配列の個数部分を変数で指定するとエラーになってしまいます。 #!/bin/bash aa[0]="a0" aa[1]="a1" aa[2]="a2" bb[0]="b0" bb[1]="b1" bb[2]="b2" bb[3]="b3" cc[0]="c0" cc[1]="c1" cc[2]="c2" cc[3]="c3" cc[4]="c4" list=(aa bb cc) for i in ${list[@]} do eval echo "$i=\${#$i[*]}" n="\${#$i[*]}" mes="\${$i[$(( ${RANDOM} * 3 / 32768 ))]}" eval echo "$mes \${$i[$(( ${RANDOM} * 3 / 32768 ))]}" done $ . list-test.sh aa=3 a1 a2 bb=4 b2 b2 cc=5 c0 c2 上記の下記箇所の「各配列の個数部分の3」をイメージ的には変数で指定したいです。 mes="\${$i[$(( ${RANDOM} * 3 / 32768 ))]}" ↓ mes="\${$i[$(( ${RANDOM} * $n / 32768 ))]}" $nのように指定すると、下記のエラーになってしまいます。 >bash: 29205 * ${#aa[*]} / 32768 : 構文エラー: オペランドが予期されます (エラーのあるトークンは "${#aa[*]} / 32768 ") ${n}や\$nや($n)など色々試してみたのですが、解決できませんでした。 恥ずかしながら、どなた様かご教授ねがえませんでしょうか

  • responseTextから連想配列へ

    ajaxによってサーブレットから以下のresponseTextを取得したとします。 ~ A ~ a : aa b : bb c : cc ~ B ~ d : dd このようなレスポンスから var array; array["a"] = 'aa'; array["b"] = 'bb'; というように連想配列を取得したいのですが、どのようにすれば良いかわかりません。 どなたか力を貸していただけませんか?

  • 構造体の配列とメンバの配列

    typedef struct _ex_table1 {   int  x[10];   int  y[10]; }ETable1; ETable1 et1; int ans1; for( int a = 0; a < 10; a++ ){   et1.x[a] = a+10;   et1.y[a] = a*2; } for( int b = 0; b < 10; b++ ){   if( et1.x[b] == 15 ){     ans1 = et1.y[b];     break;   }   else{     ans1 = 0;   } } printf( "%d", ans1 ); ///////////////////////////////// typedef struct _ex_table2 {   int xx;   int yy; }ETable2; ETable2 et2[10]; int ans2; for( int aa = 0; aa < 10; aa++ ){   et2[aa].xx = aa+10;   et2[aa].yy = aa*2; } for( int bb = 0; bb < 10; bb++){   if( et2[bb].xx == 15 ){     ans2 = et2[bb].yy;     break;   }   else   {     ans2 = 0;   } } printf("%d", ans2 ); と言う感じに、微妙にソースを書いてみたのですが、 上のメンバ(x,xx)の値が正しいものがあったら、 対応する下のメンバ(y,yy)を出力したいと思っていますが、 構造体を配列にした場合と、構造体メンバを配列にした場合は どのように違うのでしょうか? 私には、同じように思えてしまいます。 どなたか、利点・欠点など教えていただけませんか? よろしくお願い致します。

  • エクセルマクロのサブルーチン引数で配列を使用したい

    VBA初心者です。 エクセルのマクロを組んでいるですが、サブルーチンの引数を配列にしたいのですが、どうすればよろしいでしょうか? 下記に例を示します。 呼び出し(Call)とサブルーチンの配列変数の記載方法がわかりません。 特に気になるのは、サブルーチンの配列に配列数(下記であれば10)を記入する必要があるのか? 必要な場合、元の配列数を変更した場合、どうすればミスなく、漏れなく修正できるか、良い方法はありまんせんか? (例) (呼び出し側) Dim AA(10) As Integer Call Test(AA)     ← 引数はAAでよい?それともAA() Sub Test(ByRef AA As Integer) ← AA or AA() or AA(10) ? AA(3) = AA(2) + AA(1) 以上、お手数をおかけしますが、よろしくお願いします。

  • なければInsert、あればUpdate …ってできますか?

    MySQL 3.23.49-nt を使用中です。 とあるテーブルを、3つのサーバで使用中で、このテーブルを一つのサーバで更新して、他のサーバへ レコードをコピーしたいのですが、「他のサーバ」に既に同じキーの レコードが存在する可能性があります。 こちらで更新したいサーバ(A)のテーブルの内容をこんな感じだとします。 キー番号 | SEQ | 項目A | 項目B ---------+-----+-------+------ 1001 | 1 | 11-AA | 11-BB 1001 | 2 | 12-AA | 12-BB 1002 | 1 | 21-AA | 21-BB 1002 | 2 | 22-AA | そして、コピー先のサーバ(B)のテーブルの内容をこんな感じだとします。 キー番号 | SEQ | 項目A | 項目B ---------+-----+-------+------ 1001 | 1 | 11-BA | 11-XX 1002 | 1 | 21-BA | 21-YY 1002 | 2 | | 22-YY 「キー番号」「SEQ」「項目A」だけを、サーバAと同一にしたいと考えています。 キー番号とSEQが同一のレコードが存在する場合、サーバBの「項目B」は変えたく ありません。 すなわち、サーバ(B)が キー番号 | SEQ | 項目A | 項目B ---------+-----+-------+------ 1001 | 1 | 11-AA | 11-XX ---- 項目Aを更新 1001 | 2 | 12-AA | ---- レコードをINSERT 1002 | 1 | 21-AA | 21-YY ---- 項目Aを更新 1002 | 2 | 22-AA | 22-YY ---- 項目Aを更新 のようになって欲しいのです。 そこで、 「キー番号="1001"、SEQ = "1" のレコードがあれば、そのレコードの項目Aに'11-AA'をセットしてUPDATE。 レコードがなければ、キー番号="1001"、SEQ = "1"、項目A='11-AA'のレコードをINSERT。」 というようなMySQLの命令文(?)を書けないかなぁ?と、一生懸命参考書をひっくり返してもがいています。 できるようなできないような... 無理でしょうか?

    • ベストアンサー
    • MySQL