• ベストアンサー

テーブルの値を1部取得は可能ですか?

char table[] = { "a", "b", "c", "d", "e", } if(引数 == 1){  a,b,cのみの値を取得 } else{  a,d,eの値のみ取得 } このような事は可能でしょうか? 調べていて別の人が書いたソースを参考ににcontinue文を見つけたのですが、この場合使ってもいいのか、どうやっていいのか分かりません。 ご教授願えませんか? よろしくお願いします。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★最も分かりやすい回答! ・まずは、サンプルソースを紹介します。 ●サンプル char table[] = {  'a', ←『’』文字で文字定数を表現します。  'b',   『”』文字は文字列定数を表します。注意!  'c',  'd',  'e', }; ←付け忘れ。注意! if ( 引数 == 1 ){  printf( "%c\n", table[0] ); ←'a'を取得(参照・代入可能)  printf( "%c\n", table[1] ); ←'b'を取得  printf( "%c\n", table[2] ); ←'c'を取得 } else{  printf( "%c\n", table[0] ); ←'a'を取得  printf( "%c\n", table[3] ); ←'d'を取得  printf( "%c\n", table[4] ); ←'e'を取得 } ●まとめ ・table[0] ⇒ 'a'を取得や代入など出来ます ・table[1] ⇒ 'b' ・table[2] ⇒ 'c' ・table[3] ⇒ 'd' ・table[4] ⇒ 'e' ・と対応していますので、取得するには『通し番号=添え字番号』などで  取得や、代入などが行えます。 ・『continue』は繰り返し文の中で使いますが、繰り返し文で取得しないのかな。 ・『continue』は、繰り返し文の処理をスキップして次の繰り返し条件へジャンプ  移動させる命令です。ちなみに『break』は繰り返し文を抜ける命令です。 ・以上。おわり。分かりますかね?上記の説明で。

noname#26266
質問者

お礼

ありがとうございます。

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

その他の回答 (2)

回答No.2

   こんな方法もある。 #include <stdio.h> int func(int n) { char *table = "abcde", c[4] = {'\0', }; int index_table[][3] = {{0, 3, 4}, {0, 1, 2,},}; int i; for(i = 0; i < 3; i ++) c[i] = table[index_table[n == 1][i]]; printf("%d : %s\n", n, c); return; } int main(void) { int i; for(i = 0; i < 3; i ++) func(i); return 0; }  

noname#26266
質問者

お礼

ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • koedame
  • ベストアンサー率33% (10/30)
回答No.1

結論から言うとできます。 ただ、上のだとエラー出るようなので少し改良して こちらで教えますね。w 今回は要素数が5個です。 っとちなみに continue はループを最初からやり直せっ!という命令です。 char table[] = {'a','b','c','d','e'}; char box[ 5 ];//値を取得したときの格納用配列です(とりあえず5コ(そんなにいらないなら減らしてもいいです)) if(引数 == 1){   for( int n=0; n<5; n++ )   {     if( 必要のないものの条件(範囲)(今回は 1 で)n == 1 )       continue;//これでループをもう一度上から(n は1増加します)     box[ n ] = table[ n ];//値格納   } } else{   上のif文を参考にしてください。 } まあ、今回は少し適当もはいっていますが、 感じ的にはこんな感じです。 continue はあまり使わないので覚えるのは少し大変ですが がんばってください。

noname#26266
質問者

お礼

ありがとうございます。

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

関連するQ&A

  • 2個の引数を使用して、テーブルの行、列に該当する値を求める方法は?

    Excel2003で、2個の引数を使用して、テーブルの行、列に該当する値を求める方法を、教えて下さい。 例) Aテーブル  A  B  C  D  E 1   5  4  3  2 2 1 260 200 150 100 3 2 460 370 280 180 4 3 670 540 400 270 5 4 880 700 530 350 Bテーブル  A B  C 1  5 2  2 460 BテーブルのB1のセルに5、B2のセルに2を、入力した場合、Aテーブルから460を探し出して、BテーブルのC2のセルに460と、表示させたい。 この時、C2のセルには、どんな関数がいいのでしょうか? よろしく、ご教示下さい。

  • 2つの列が同じ値の行を取得するSQL

    ご存知の方なら、きっと「簡単だよ~」とおっしゃると思うのですが、教えてください。 テーブルにA,B,Cの3つの列がVARCHAR2であったとします。 AとBが同じ値のCを取得したい場合のSELECT文はどのようにかくのでしょうか。 例 A B C   1 1 a   1 2 b   2 2 c   2 3 d だったばあい、a と c が選択されればOKです。

  • select insertで複数テーブルから値を取得したい

    環境:oracle9i select insertで、2つのテーブルから値を取得して、1つのテーブルにinsertすることは可能でしょうか? たとえば、以下の場合、どのようなSQL文を書けばよいか、アドバイスいただけますでしょうか。 よろしくお願いします。 insertしたいテーブル:A Aテーブルの項目:o,p,q,r,s,t 値を取得するテーブル:B,C Bテーブルの項目:o,p,q,r Cテーブルの項目:o,p,s,t oとpが主キーになっていて、それらが一致するBとCのデータを あわせて、Aにinsertしたいと思っています。 insert into A(o,p,q,r,s,t) select このあと、どのように書けばよいのかがわかりません。

  • COBOLについて

    COBOLで以下のような仕様の場合、どのようなロジックにするのが良いでしょうか? ・仕様  A項目=値A または  B項目=値B または  (C項目=値C かつ D項目=値D ) または  E項目=値E 上記の場合、何も処理しない(以降の処理もせずに、次レコードを読みに行く  上記以外の場合、処理1を行い、次処理以降の処理を継続する。 (ロジック1) IF A項目=値A OR B項目=値B OR (C項目=値C かつ D項目=値D ) OR E項目=値E THEN CONTINUE ELSE 処理1を行う END-IF. (ロジック2) IF A項目=値A MOVE '1' TO 該当フラグ END-IF. IF B項目=値B MOVE '1' TO 該当フラグ END-IF. IF (C項目=値C かつ D項目=値D ) MOVE '1' TO 該当フラグ END-IF. IF E項目=値E MOVE '1' TO 該当フラグ END-IF. IF 該当フラグ='1' CONTINUE ELSE 処理1 END-IF. 自分は仕様に沿ってロジック1で組むべきだと思うのですが、 ロジック1は分かりずらいのとメンテが大変なのでロジック2で組むべきだと言われました。 どちらで組むのが普通でしょうか?どなたか教えて下さい!

  • 1つのテーブルからのデータ取得

    お世話になります。 Table1にはA,Bのフィールドがあり 例えば A=01のレコードを取得(取得するフィールドはA,B) このレコードを(1)とする。 Table1のうち、Aが(1)のBと一致する レコードを(2)とする。 Table1のうち、Aが(2)のBと一致する レコードを(3)とする。 N番目のBと一致するTable1のAがなくなるまで 上記を繰り返す。 (1),(2),(3)・・・の A,Bの値を取得するためには どういうSQL文を書けばいいでしょうか? 例:ここでA=01を設定する テーブル例と結果 Table1 A: B 01:02 取得 02:04 取得 02:05 取得 03:04 X 04:06 取得 05:10 取得 07:11 X 10:15 取得 以上お教えください。よろしくお願いします。

  • C言語の配列の使い方について質問です。

    以下のプログラムを配列を使って見やすくしたいのですが、どのように作ったら良いでしょうか? 宜しくお願いします。 #include<stdio.h> int main(void) { int a, b, c, d, e, f, g, h, i, j, k, l, m ,n, o; /*5段目の処理*/ for(a = 1; a <= 15; a++) { for(b = 1; b <= 15; b++) { if(a == b) continue; for(c = 1; c <= 15; c++) { if(a == c || b == c) continue; for(d = 1; d <= 15; d++) { if(a == d || b == d || c == d) continue; for(e = 1; e <= 15; e++) { if(a == e || b == e || c == e || d == e) continue; // printf("%d %d %d %d %d\n", a, b, c, d, e); ////4段目//// if(a>b){ f=a-b; } else if(a<b){ f=b-a; } if(b>c){ g=b-c; } else if(b<c){ g=c-b; } if(c>d){ h=c-d; } else if(c<d){ h=d-c; } if(d>e){ i=d-e; } else if(e<d){ i=e-d; } // printf(" %d %d %d %d \n", f, g, h, i); /////3段目//// if(f>g){ j=f-g; } else if(f<g){ j=g-f; } if(g>h){ k=g-h; } else if(g<h){ k=h-g; } if(h>i){ l=h-i; } else if(h<i){ l=i-h; } // printf(" %d %d %d \n", j, k, l); /////2段目//// if(j>k){ m=j-k; } else if(j<k){ m=k-j; } if(k>l){ n=k-l; } else if(k<l){ n=l-k; } // printf(" %d %d \n", m, n); /////三段目///// if(m>n){ o=m-n; } else if(m<n){ o=n-m; } // printf(" %d \n", o); if(a != b != c != d != e != f != g != h != i != j != k != l != m != n != o){ printf("%d %d %d %d %d\n", a, b, c, d, e); printf(" %d %d %d %d \n", f, g, h, i); printf(" %d %d %d \n", j, k, l); printf(" %d %d \n", m, n); printf(" %d \n", o); } } } } } } }

  • 関数に配列を渡して値を変える

    関数に配列を渡して値を書き換えたいのですが、文字配列である char b[10]="abc"; の書き換えが綺麗にできません。 どのように書いたら綺麗にできますか? void hen(int *a, char *b,char **c){ *a=7; b[0]='d'; b[1]='e'; b[2]='f'; //こういう書き方なら渡せるけれどb[10]="def"; 見たいな書き方で一行で値を渡す方法はないものかな? *c="jkl"; } void main (void){ int a=5; char b[10]="abc"; char *c="ghi"; hen(&a,b,&c); printf("%d %s %s\n",a,b,c); }

  • Accessで2つのテーブルのデータの整合性を確認したい

    Accessで2つのテーブルのデータの整合性を確認したいのですが、よい方法を教えていただけませんか? 状況は以下のとおりです。 Aテーブル    a   b    c   d   e       1  111  222  333  444  555 2  666   777 888 999 100 3   110 112 113 114 115 Bテーブル    a   b    c   d   e       1  111 222 333 444 555 2  666 777 000 999 100 3   110 112 300 400 500 ・AテーブルとBテーブルがあり、それぞれのテーブルのa、b、dフィールドのみを対象に、その値がAテーブルとBテーブルとで等しいかどうか調べたい。 (c、eフィールドの値が異なっていても、a、b、dフィールドの値が同じであればそのレコードはOKとし、a、b、dフィールドで1つでも異なる値があればNGとし、抽出したい。 例えば、Bテーブルの1、2レコードはOKだが、3レコードはNG) ・それぞれのテーブルのaフィールドが主キーになっている。 うまく説明できず、わかりにくいかもしれませんが、よろしくお願いします。

  • VBAでWeb上のテーブル内の値を取得

    IEで開いているWeb上にテーブル(表)があります。 テーブル上の指定の場所の値を取得したいのですが、「VBAを使って取得&エクセルに貼り付け」って出来ますか? フォーム内の値なら、ソースに「NAME」などがあるので値を取得することが出来るのですが テーブルの場合、そういうのが無いので困っています。 宜しくお願いします。

  • 同一テーブルから複数件のデータを取得して1データとしてみたい

    こんにちは。 現在、以下の構成のテーブルから 複数件のデータを取得して1つのデータとして 参照したいと思っているのですがどうやって よいものかわかりません。 申し訳ありませんがご教授ください。 --------------------- テーブルsample --------------------- 項目A key 項目B key 項目C key 項目D 項目E --------------------- 取得したいデータは以下の通りで 同一の項目A,B,Cでグルーピングして 項目D,Eが存在する分だけ取得したいと思っております。 ----------------------------------------------- 項目A,項目B,項目C,項目D,項目E,項目D,項目E,..... -----------------------------------------------

BOSS TONE STUDIO 起動できず
このQ&Aのポイント
  • BOSS TONE STUDIO for GT-1000 Ver. 3.20.1をPC(Windows 10)で起動しようとすると画面が真っ白になり、先に進めない状態です。
  • 数ヶ月前までは起動できていて、GT-1000との接続もできていましたが、今回起動できなくなってしまいました。
  • TONE STUDIO for GT-1000とTONE STUDIO for RCの両方をアンインストールして、再起動後にfor GT-1000の最新版をインストールしても状況は変わりません。
回答を見る