

判別式を定義したいのですが、どうすればいいのかがわかりません。  
自分は以下のように定義しました。  
判別式D=b*b-4*a*c>0のときは、解を２つ持つのでnum=2.
判別式D=０のときは、重解なのでnum=1。判別式D<0のときは解をもたないので、num=0と定義しましたが,うまくコンパイルができませんでした。  
int num_of_ans1a()の部分は問題ないと思うのですが、int main()の部分のどこが問題なのかを教えてほしいです。

[code]

    int num_of_ans1a(int a,int b ,int c)
    {
        int num;
        if(b*b-4*a*c>0){
            num=2;
        } if(b*b-4*a*c=0){
            num=1;
        } else {
            num=2;
        }
        return num;
    }
    
    int main(void)
    {
        int n;
        n=num_of_ans1a();
        printf("結果は%dです。",n);
    
        return n;
    }
    
[/code]


CC BY-SA 4.0
2020-05-16T12:48:39.427
66672
2020-05-16T16:04:24.320
2020-05-16T12:58:16.027
26370
36412
question
c
判別式をプログラムしたいのですがやり方がわかりません


`int num_of_ans1a()`の2つ目の`if`で`(b*b-4*a*c = 0)`と言う風に条件式ではなく代入式になっています。

`=`は2つで`(b*b-4*a*c == 0)`になるのではないですか？

それから`int main(void)`の中の`n=num_of_ans1a();`の呼び出しでは、引数が何も指定されていません。

この2つがコンパイル出来ない原因ではないですか？

* * *

**追記：**

ちなみにこれくらいのことだと、使っている開発環境(何かのIDE(統合開発環境), エディタ,
コンパイラ)に含まれていたり仕様を合わせた拡張機能やLintツールを使うことによって簡単に調べたり検出したりすることが出来ます。

質問自体が不要になったり、質問するにしても詳しい情報が書けて答えも得やすくなりますので、検討してみてください。


CC BY-SA 4.0
2020-05-16T13:49:03.177
66675
2020-05-16T16:04:24.320
2020-05-16T16:04:24.320
26370
26370
66672
answer


コンパイルエラーの原因は以下のとおりです。

  * 関数num_of_ans1aの２番目のif文に`=`を使っていますが、代入演算子とみなされエラーになっています。  
0と比較する場合は、`==`を使う必要があります。※kunifさんの回答のとおりです。

  * main()でnum_of_ans1a()を呼び出すとき、引数(a,b,c)が指定されていません。

コンパイルエラーとなりませんが、以下の問題があります。

> 判別式D<0のときは解をもたないので、num=0と定義しました

判別式`D<0`のとき、2番目のif文のelseで`num=2`になります。

また、最初のif文が成立するときも、2番目のif文のelse節が実行されます。  
2番目のifの前にelseを置く必要があります。


CC BY-SA 4.0
2020-05-16T13:53:10.783
66677
2020-05-16T13:53:10.783
35558
66672
answer