- 締切済み
条件式の省略
if文の条件式の中を省略したいと思っています。 for(i=0;i<5;i++){ if(p[i][0]==a[0]||p[i][0]==b[0]||p[i][0]==c[0]||p[i][0]==d[0] ||p[i][1]==a[0]||p[i][1]==b[0]||p[i][1]==c[0]||p[i][1]==d[0] ||p[i][2]==a[0]||p[i][2]==b[0]||p[i][2]==c[0]||p[i][2]==d[0] ||p[i][3]==a[0]||p[i][3]==b[0]||p[i][3]==c[0]||p[i][3]==d[0]){ continue; }else{ a[1]=p[i][0]; b[1]=p[i][1]; c[1]=p[i][2]; d[1]=p[i][3]; } ifの条件式の中のp[i][1]~p[i][3]を省略したいのですが、どうやったらできるかわかりません。ぜひ教えてください。
- kaeru6808
- お礼率33% (2/6)
- C・C++・C#
- 回答数4
- ありがとう数1
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- yama5140
- ベストアンサー率54% (136/250)
>ifの条件式の中のp[i][1]~p[i][3]を省略したい 処理を「省略」ではないですよね。 コーディングの視認性?として、ですよね。 int i, k, iSw; for( i = 0; i < 5; i++ ){ for( iSw = 0, k = 0; k < 4; k++ ){ if( p[ i ][ k ] == a[ 0 ] ) continue; if( p[ i ][ k ] == b[ 0 ] ) continue; if( p[ i ][ k ] == c[ 0 ] ) continue; if( p[ i ][ k ] == d[ 0 ] ) continue; iSw++; } if( 0 == iSw ) continue; a[ 1 ] = p[ i ][ 0 ]; b[ 1 ] = p[ i ][ 1 ]; c[ 1 ] = p[ i ][ 2 ]; d[ 1 ] = p[ i ][ 3 ]; } (全角空白使用)
- rabbit_cat
- ベストアンサー率40% (829/2062)
if ( std::find(p[i], p[i]+3, a[0]) != p[i]+3 || std::find(p[i], p[i]+3, b[0]) != p[i]+3 || std::find(p[i], p[i]+3, c[0]) != p[i]+3 || std::find(p[i], p[i]+3, d[0]) != p[i]+3 ) { } とか
- gau_puzzler
- ベストアンサー率48% (39/81)
分けるとこうですよね? p[i][?]の?の部分は繰り返しでなんとかなりそうです if( p[i][0]==a[0]|| p[i][0]==b[0]|| p[i][0]==c[0]|| p[i][0]==d[0]|| p[i][1]==a[0]|| p[i][1]==b[0]|| p[i][1]==c[0]|| p[i][1]==d[0]|| p[i][2]==a[0]|| p[i][2]==b[0]|| p[i][2]==c[0]|| p[i][2]==d[0]|| p[i][3]==a[0]|| p[i][3]==b[0]|| p[i][3]==c[0]|| p[i][3]==d[0] ){ for (i=0;i<5;i++) { bool bSame = false; for (j=0;j<=3;j++) { if (p[i][j]==a[0]|| p[i][j]==b[0]|| p[i][j]==c[0]|| p[i][j]==d[0]) { bSame = true; break; } } if (bSame) continue; else { a[1]=p[i][0]; b[1]=p[i][1]; c[1]=p[i][2]; d[1]=p[i][3]; } }
- Tasuke22
- ベストアンサー率33% (1799/5383)
これだけの情報では省略不可能です。 データ内容の規則性が分かれば省略が可能かも しれません。
関連するQ&A
- 条件式について
C言語でプログラムを作成しています。 if分を使う部分があるのですが、条件式「==」を使うとどうもうまくいきません。 プログラムの条件文の箇所を簡単に書きますと、 if(time>=2000){ 条件1; if(a[i] == a[i-1]) 条件2; }else{ 条件3; } という非常に一般的なものです。 3行目の「==」がうまく機能しておらず、条件2がスルーされてしまいます。ためしに「>=」に変えて実行してみるとうまく機能します。 以前もこういった状況があったので、「==」を使わない記述をしたのですが、今回は「==」を使わなければならないので、「==」が機能しない理由があれば教えていただきたいです。 非常に基礎的なことで申し訳ないのですが、宜しくお願い致します。
- ベストアンサー
- C・C++・C#
- 条件分岐(if)について
条件分岐(if)についてお聞きしたことがあります。 例えば if($a == 'A' || $a == 'B'){ 処理 }else if($a == 'C' || $a == 'D' || $a == 'E'){ 処理 }............... といった条件分岐があったとて、お聞きしたいことが2点あります。 ・条件分岐この後も数十個続いたとします。その場合もelse ifで一つ一つ 条件を書かなければならないのでしょうか? ・条件式if($a == 'A' || $a == 'B'....)が長くなる場合プログラムが見にくくなるので 別途に条件式を書いておいてif文の所では($a == ◯)といったように簡潔に書くことは できないのでしょうか? 宜しくお願いします。
- ベストアンサー
- PHP
- 条件式で差額
A B C D 1 2 1000 といった状態に、 B2に(B1に入力があればA2の3%の結果を、無ければ0を)の式を =IF(B1="","0",A2*0.03) C2に(C1に入力があればA2の10%の結果を、ただしB2に値が有ればその差額を、無ければ0を)の式を =IF(C1="","0",A2*0.1)-IF(B1="",0,B2) D2に(D1に入力があればA2の12%の結果を、ただしB2またはc2のどちらかに値が有ればその差額を、無ければ0を)の式を =IF(D1="","0",A2*0.12)-IF(B1="",0,B2)-IF(C1="",0,C2) と表記すると例えばB1とD1に入力があればB2=30,D2=90で結果は問題ないのですがC2に(-30)と表示され、同様にB1のみ入力だとC2:D2に(-30)と表示されて困ってます。 この(-30)の表示をさせない正しい条件式が見当もつかず今回投稿させてもらいました。どうか皆さんご助力お願いします。
- ベストアンサー
- オフィス系ソフト
- Excelの複数の条件にあった式を教えて下さい。
A B C D E 1 4.7 16 8 3 2 5.8 0.0 3.0 6.0 3 4.5 4 2.16 5 3.55 ・ ・ ・ ・ Aの列には1日の平均気温が入力されています。(A31まで) B1に、「A1が16℃以上だったら0.0、8℃以上16℃未満だったら3.0、3℃以上8 ℃未満だったら6.0」と式を作り、B2から下の欄も、「 」内の条件でした いのですが、教えてもらえないでしょうか? 宜しくお願いします。 あらかじめ、C1~E1に16℃、8℃、3℃と言う意味で数字を入れています。 C2~E2にも、条件を満たしたら、この数字になりなさいという意味で数字を 入れています。 IF文を使ってB1に =IF(A1>C1,”0.0”,IF(D1≦A1>C1,”3.0”,IF(E1≦A1>D1,"6.0",""))) と式を入れたのですが、#NAMEとエラーが出てきます。
- ベストアンサー
- オフィス系ソフト
- 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); } } } } } } }
- ベストアンサー
- C・C++・C#
- 条件式の書き方について
$aがaかbかcだった場合という条件式を if($a eq a || $a eq b || $a eq c) とせずに if($a eq aまたはbまたはc) というようにまとめて書くことは無理なんでしょうか?
- ベストアンサー
- Perl
- phpの条件文について
phpの条件文について 『aまたはbどちらか小さい方の条件』が揃ったとき 処理を行いたいと考えます。 1.for文にor条件を入れることは可能でしょうか? for ($i = 1; $i <= (a or b); i++) 2.if文にor条件を入れることは可能でしょうか? if (a or b) 上記例は絶対違うと思います。 正解をご教授ください。 よろしくお願いします。
- ベストアンサー
- PHP
- 比較演算子?それとも条件演算子?それとも?
JavaScriptで、ある条件の式の記述がわからず困っています。 既存のJSを改修しようと思っていますが、知識が足らずに行き詰まりました。 内容 a,b,c,dと4つの箱があり、それぞれ最大3点ずつ得点が入れることができ,0~12点までの得点内容によって結果を5つ表示させたい。 条件 ・トータルポイントが0~1点の時、結果0を表示。 ・トータルポイントが2~12点の時、 aが一番得点が多い時、結果1を表示。 bが一番得点が多い時、結果2を表示。 cが一番得点が多い時、結果3を表示。 dが一番得点が多い時、結果4を表示。 ・得点が同点だった場合、a>b>c>dとなり、結果1を表示。 なんとか自力で下記のような記述をしましたが、結果表示が思ったようになりません。 また、初期変数の記述は省いています。 if(totalPoint <= 1){ resultNum = 0; } else if(totalPoint >= 2){ if(a >= b >= c >= d >= 1){ resultNum = 1; } else if(b >= c >= d >= 1){ resultNum = 2; } else if(c >= d >= 1){ resultNum = 3; } else if(d >= 1){ resultNum = 4; } 演算子も含め、どのような記述であればスマートでしょうか? ご教授いただけますと幸いです。 よろしくお願いいたします。
- ベストアンサー
- JavaScript
お礼
説明足らずですいませんでした。 boolを使うことにより、簡単に書くことができました。 教えてgooを使い慣れていないので、お礼ポイント渡さず終了してしまい申し訳ありませんでした。