• ベストアンサー

if文について教えてください

 C++でプログラムを作っています。  b0~b3どれかが1の時という条件指定と、さらにその上でb0~b3どれも1でなく、かつどれも同じ値でないという条件指定はどのように記述すればよいのですか?  ちなみに私は次の様にしたのですが、ビルドすると「error C2181: else 文が if と一致しません。」となってしまいました。 if((b[0]=1)||(b[1]=1)||(b[2]=1)||(b[3]=1));{ c[1]=c[1]+1; } else(b[0]!=b[1]!=b[2]!=b[3]!=1){   c[2]=c[2]+1;          }  もう一つこちらでもダメでした。 if((b[0]=1)||(b[1]=1)||(b[2]=1)||(b[3]=1));{ c[1]=c[1]+1; } else(b[0]!=b[1]!=b[2]!=b[3]){   c[2]=c[2]+1;          }

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

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

まず文法がでたらめ。 else(条件)なんてC++の文法はありません。 たぶんelse if(条件)と書きたかったのでは? あと b[0]!=b[1]!=b[2]!=b[3]!=1 も式的に問題があるのと条件が的外れしています。elseに来た時点で全て1でない事は保障されるので、同じ値じゃないかチェックすれば良いです。 式的な問題は、b[0]!=b[1]の結果はtrue/falseですのでそれとb[2]を!=で比べると間違いなく意図通りに動作しません。 なので、抽象的に書きますがbo!=b1 and b1!=b2 and b2!=b3 and b0!=b2 ....と全部の条件を書き並べてください。

sakaelu
質問者

お礼

 ご指導ありがとう御座います。文法間違えと余分な;についてはプログラムから質問に書き写す際にミスをしてしまったようです。

その他の回答 (3)

  • hirai7
  • ベストアンサー率31% (29/91)
回答No.4

//どれかが1 if(b[0]==1 || b[1]==1 || b[2]==1 || b[3]==1) { } //どれも同じ値でない else if(b[0]!=b[1] && b[0]!=b[2] && b[0]!=b[3] && b[1]!=b[2] && b[1]!=b[3] && b[2]!=b[3]) { } //どれも1でなければ else if(b[0]!=1 && b[1]!=1 && b[2]!=1 && b[3]!=1) { } 動作確認していないので間違っていたらすいません。 間違いがあったら誰か指摘してね。

sakaelu
質問者

お礼

 ご指導ありがとう御座います。やっぱり上手くいきませんでした。別の道を探してみます。

noname#208124
noname#208124
回答No.3

条件分岐以前に文法の基礎がめちゃくちゃです ・比較じゃなく代入してる ・余計な; ・比較演算子をただ繋げても数学的な意味とは一致しません  比較の結果、との比較にしかなりません

sakaelu
質問者

お礼

ご指導ありがとう御座います。文法間違えと余分な;についてはプログラムから質問に書き写す際にミスをしてしまったようです。

  • baq777
  • ベストアンサー率28% (20/71)
回答No.1

とりあえず if((b[0]=1)||(b[1]=1)||(b[2]=1)||(b[3]=1));{ の、「;」は構文エラーです。 ビルドエラーは基本的に構文エラーですので、文法的な 間違いに着目して探してください。

sakaelu
質問者

お礼

ご指導ありがとう御座います。文法間違えと余分な;についてはプログラムから質問に書き写す際にミスをしてしまったようです。

関連するQ&A

  • if文の使い方について

    if文でaの値とbの値とcの値が一緒なら次の処理を行うものを作成したいのですが。 if($a==$b==$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、ダメで if($a=$b=$c){ 行いたい処理 }else{ その他の処理 } と書いたのですが、これもダメでした。 if($a==$b) {  if($b==$c)  {    処理   }else{     その他の処理   } }else{ その他の処理 } と書かいたら実行されたのですが、このように分けて書かないとダメなのですか? いいやり方がありましたら教えてください

    • ベストアンサー
    • PHP
  • if文について

    最近、C言語プログラムから、離れていて、久しぶりにここを覗いたのですが、 こんな質問を見ました。 質問 C言語初心者だが、学習用に良いサイトはないか? 最初の回答の方は、ある初心者用と思われるサイトを、紹介してらっしゃいました。 それに対して、他の回答者の方々は、そのサイトの一分を引用して、コンパイルできないし、間違っていると指摘されました。それは以下のようなものでした。 if(条件式) 文1; else 文2; その代わりに掲載されているのが次のようなものでした。 if(条件)条件が真のときに実行する1文; else 条件が偽のときに実行する1文; 私には、最初の回答がなぜ間違っているのか、何故コンパイルできないのか、判りません。何方か詳しく教えていただければ、嬉しいです。よろしくお願いします。

  • Excel97で、If文をなんとかしたい

    IF文でなんとかなりそうなんですが、IF文を使った事がなくて。 A列   B列   C列    任意の位置のセルD 数式  文字列   数式  文字列 数式  文字列 数式  文字列 こんな表で、Bの文字列の値と、Dのセルの値が一致した時、Aの数式の値(数字)をCの列に表示させ、BとDの文字が一致しない時は、”エラー”を表示させたいんですが、どういう風にすればいいのでしょうか? IF文を使えばいいのでしょうか? どういう風に、数式を立てればいいのかわかりません。 どなたか詳しい方、教えていただけませんか?

  • if文の書き方

    if文の書き方 if(!$a){$b=1;}の内容で、条件を右に持ってくる書き方だと$b=1 if(!$a);だと思いますが、 if(!$a){$b=1;}else{$b=2;}の内容で、条件を右に持ってくる書き方はできないでしょうか?

    • ベストアンサー
    • Perl
  • IF文

    (A)IF 条件 THEN 単純実行文1 ELSE 単純実行文2 (B)IF 条件 THEN 実行処理1 ELSE 実行処理2 Aの文では単純実行分なのになぜ改行すると(B)の文みたいに実行処理になるのでしょうか? 実行処理と単純実行文の違いを教えてください

  • If文の条件文の書き方

    お世話になります。 Excelでマクロを作成しております。 内容:  あるセルに、X<=300 というような条件を入れておきます。  ある値、たとえば、500 が来たときに、Xに代入して、  500<=300 という条件式を作り、それが、正しいか、正しくないか  の結果を求めたいと思っています。 このとき、if文の条件文は、値によって、変わらなくてはいけないので、 文字列の置き換え等をして、変数として条件文を作ると、「型が違います」 のエラーになります。 どのように条件文を作ればいいでしょうか?? hani = Cells(1,1).value 'セル1,1に、X<=300 が書かれています。 exp = Replace(hani, "X", 500) '"X"を500と置き換えます。 If exp Then Check = 0 Else Check = 1 End If よろしくお願いします。

  • if文の中に

    例えば if(a<0){ if(a<b) c=a+b } ように if文の中にif文を入れる事はできるのですか? また、if-else文はif() →else if() →elseと続きますが、 これ以降(4つ以上の選択肢) に繋げたい時はどうすればいいですか? 教えて下さい!

  • if文の演算子について

    if文の演算子について int a=0,b=1,c=1,d=1; if(a==1 && b==1 && c==1 ||d==1){ Printf("yes"); }else{ Printf("no"); } if((a==1 && b==1 && c==1 )||d==1){ Printf("yes2"); }else{ Printf("no2"); } } 上記のif文で出力結果が異なります。 if((a==1 && b==1 && c==1 )||d==1)の方はa=1、b=1、c=1の時もしくはd=1の時と 理解できるのですが、 if(a==1 && b==1 && c==1 ||d==1)の方は、どういう条件の時が当てはまるのでしょうか?

  • if文の判定条件('||'と'&&'の使い方)

    ○if文の判定条件への理解が弱いため、下記プログラムを作成し、 疑問があったため、質問をしたいと思っております。 #include<stdio.h> #include<string.h> int main() { char moji[]= "A"; /***********************************************************/ if( 0 != strcmp( moji , "A" ) || strcmp( moji , "B" ) ) ^^(1) /***********************************************************/ { printf( "文字不一致" ); } else { printf( "文字一致" ); } return (0); } ○質問 「/*/」で囲ったif文の判定箇所になりますが、 この判定条件は"配列mojiに格納されている値が"A",または"B"以外の" ときに、画面上に「文字不一致」を出力します。そうでなければ 「文字一致」を出力します。 今回、配列mojiには"A"が格納されており、「文字一致」が画面に 出力されるはずですが、「文字不一致」が出力されてしまいます。 判定条件が誤っていると思い、色々と試したところ、(1)の箇所を 「&&」にしたときに、「文字不一致」が出力されます。 「||」(論理和)と「&&」(論理積)が理解できていないと思われ、 この部分を交えて、何故「&&」にしないと「画面不一致」と出力 されないのかを、ご教授の程お願い致します。

  • if文が上手くいかない・・・

     連続投稿失礼します。  if文が上手くいきません。$hensuuの値が間違っているのにもかかわらず、条件があっている時の処理が実行されてしまいます。  なにやら癖になっているようで、if文を書くたびこのような事態が発生します。(PHPに限らず、C言語でまで・・・。)一体何が原因なのでしょうか? <?php $hensuu = "right"; if($hensuu = "wrong"){ print <<<_EOT_ 条件に合ってないはずなのに、こっちが表示されちゃう。 _EOT_; } else { print <<<_DRK_ 本来こっちが表示されるはずなのに、表示されない・・・。 _DRK_; } ?>  よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう