• ベストアンサー

並び替えについて

C言語の初心者です。 +--------------+ +A1|A2|A3|A4|配列A +--------------+ +--------------+ +B1|B2|B3|B4|配列B +--------------+ +--------------------------------+ +A1|B1|A2|B2|A3|B3|A4|B4+ 配列C +--------------------------------+ A[0]→B[0]→A[1]→B[1]という感じで配列Cに配列Aと配列Bのデータを交互に格納したいのですが、どうもうまくいきません。どうしたらよいのかわからないので教えてください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • gimmick
  • ベストアンサー率49% (134/270)
回答No.3

>A[0]A[1]→B[0]B[1]→A[2]A[3]→B[2]B[3] こんな感じでできると思います。 for(i=0;i<n;i+=2){  c[2*i]=a[i];  c[2*i+1]=a[i+1];  c[2*i+2]=b[i];  c[2*i+3]=b[i+1]; } # 次からは自分で考えましょう。

because777
質問者

お礼

本当にありがとうございます。 そうですよね、自分で考えないとC言語身につきませんよね。 アドバイスありがとうございます。

その他の回答 (3)

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.4

No.1のymmasayanです。 >A[0]A[1]→B[0]B[1]→A[2]A[3]→B[2]B[3] No.3のお答えで完璧ですが、No.1の泥臭いやりかたのおさらいを。 添え字を int i,j で取るとします。配列a,bのデータ数をnとします。 j=0; for(i=0;i<n;i+=2){  c[j]=a[i];  J++;  c[j]=a[i+1];  J++;  c[j]=b[i];  J++;  c[j]=b[i+1];  J++; }

  • gimmick
  • ベストアンサー率49% (134/270)
回答No.2

次のようにしてできます。配列A、Bの要素数をnとしています。 for(i=0;i<n;i++){  c[2*i]=a[i];  c[2*i+1]=b[i]; }

because777
質問者

お礼

ありがとうございました。試してみたところできました。

because777
質問者

補足

また質問なんですが、今度はこの配列はchar型で配列Cに A[0]A[1]→B[0]B[1]→A[2]A[3]→B[2]B[3]という風に最終的には A,B配列の要素16ずつのデーターを交互に並び替えたいのですが、こちらはどうやればよいのでしょうか? よろしくお願いします

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

添え字を int i,j で取るとします。配列a,bのデータ数をnとします。 j=0; for(i=0;i<n;i++){  c[j]=a[i];  J++;  c[j]=b[i];  J++; } と言う感じで出来ると思いますが。  

because777
質問者

お礼

ありがとうございました。 早速試して試してみます。

because777
質問者

補足

また質問なんですが、今度はこの配列はchar型で配列Cに A[0]A[1]→B[0]B[1]→A[2]A[3]→B[2]B[3]という風に最終的には A,B配列の要素16ずつのデーターを交互に並び替えたいのですが、こちらはどうやればよいのでしょうか? よろしくお願いします。

関連するQ&A

  • 配列の並び替え

    下のように5つの配列がA~E列まであって、2、3行目にデータが入っています。このときに、2行目の値が3行目の値より小さい配列で、かつ、2行目の値が小さい順に並べる。その後に、3行目より、2行目の値の方が大きい配列を3行目の値が大きい順に並べるマクロコードを教えてください。   A B C D E←列      1  1 2 3 4 5←配列番号 2  4 9 8 6 2 3  1 5 7 10 3      ↑ 行    ↓     A B C D E 1  5 4 3 2 1 2  2 6 8 9 4 3  3 10 7 5 1

  • 配列の合計値

    C言語の配列について質問です。基本的な質問で申し訳ないですが、ご回答いただければ幸いです。 24個の要素をもった配列Aに格納されている数字の4つごとの合計を、配列Bに格納したいです。 B[0]=A[0]+A[1]+A[2]+A[3] B[1]=A[4]+A[5]+A[6]+A[7]… イメージはこんな感じです。 ソースコードはどう書けばよいでしょうか…。 for(i=0;i<6;i++) for(j=0;j<4;j++) { B[i]+=A[i*4+j];} ではうまくできませんでした、これもなぜか分からなくて…よろしければ教えて下さい

  • [マクロ]配列を区切り文字で変数に格納する方法

    タイトルの通りなのですが、 例えば、 A1~B10にランダムな数字が入っています。 (1)A1~B10を配列Cに格納します。 (2)配列C(1,10)を変数test1に格納します。  ※その時に各配列を/で区切る (3)配列C(2,20)を変数test2に格納します。  ※その時に各配列を/で区切る (4)test1をセルC1に記入 (5)test2をセルC1に記入 のような感じです。 配列に格納する方法はさすがに分かるのですが、区切り文字を入れて変数に格納する方法が分かりません。。。。 ご教授お願いいたします。

  • 配列のサイズを動的に指定したい。

    現在FeliCaを使ったプログラムを作っているのですが、 FeliCaから読み込んだデータを各配列にサイズぴったりで格納したいんですが、読み込むデータによって配列のサイズが違うため、あらかじめ配列のサイズを指定しておくことができません。  例1「012 34567 89]    例2「01 2345678 9」   a[3]=012           a[2]=01   b[5]=34567          b[7]=2345678   c[2]=89            c[1]=9 というように空白で区切った文字列を各配列に格納したいのです。 なにか良い方法はないでしょうか? ソフトはVisualStudio6.0を使用しています。

  • 配列の問題

    学校の宿題でできないのが出てきました(´-ω-`) 誰か教えてください。 大きさn(0~n-1)の配列a,bと大きさ2n(0~2n-1)の配列cがあり、今配列cに整数データが格納されているとする。このとき、cの奇数列をaに、偶数列をbに取り出せ。

  • 入力された文字列を一文字ずつ配列に格納する方法

    例えばABCって文字列が入力されたら配列に data[0]="ABC" と格納するのではなく data[0]="A" data[1]="B" data[2]="C" と格納するにはどう書けばいいのでしょうか?

  • C言語配列

    c言語初心者ですよろしくお願いします。 ファイルから読み込んだ100万件のデータをstaticを使わずに配列に格納したいのですが。 どういった方法があるでしょうか? 私のpcでは変数名[10000]くらいがエラーのでない限界みたいです。

  • 数字配列データを画像に変換するプログラム

    ある配列にa×bの数字が格納されているとして、それをグラフィカルに表示させるにはどのようなプログラムを書けばいいのでしょうか。 数字データから、サーモカメラの出力画像のようなものを出せないかと思い、画像処理関連の書籍をあさりましたが分かりませんでした。 宜しくお願い致します。 (C言語でお願い致します)

  • PHPで配列の検索方法

    PHPで下のような2次元配列があったとします。(りんご=a、みかん=bのような意味です。CSVからデータを2次元配列に格納したものです。) $data[0][0]="りんご" , $data[0][1]="a" $data[1][0]="みかん" , $data[1][1]="b" $data[2][0]="ばなな" , $data[2][1]="c" $data[3][0]="ぶどう" , $data[3][1]="d" ここで下のような1次元配列$hogeがあったとき $hoge[0]="ばなな" , $hoge[1]="りんご" 新たに1次元配列$hogehogeを用意して、2次元配列の中から"りんご"や"ばなな"に対応する文字列を探し出して $hogehoge[0]="c" , $hogehoge[1]="a" と、格納したいのですが、やり方がわかりません。 イメージとしまして、 $hoge[0]→($data[0][0]~$data[3][0]の中から探す)→($data[2][0]であるとわかる)→($data[2][0]に対応するのは$data[2][1]だとわかる)→($hogehoge[0]=cと格納) もし分かる方がおられましたらお願いします。

    • ベストアンサー
    • PHP
  • Excelでのデータの並び替え

    Excelで以下のようにデータの並び替えを行いたいのですが どのような関数や手順で行えばいいのでしょうか。 A  B           A   B  C  D 001 a           001  a  b 001 b       →   002  a  b  c 002 a       →   003  a 002 b       →   004  a  b 002 c       →   . 003 a           . 004 a           . 004 b           . .               . . . 上記のような感じで、A列の重複を省きB列のデータを1列ごとに表示したいのです。 宜しくお願いいたします。

専門家に質問してみよう