質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

5960閲覧

二次方程式の解を求めるプログラム

tomo6

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/10/22 15:37

###前提・実現したいこと
二次方程式の解を求めるプログラムを作成中です。
コンパイルは下記のプログラムでエラーなかったのですが実行すると
xの値がinfになったりnanになったりします。
ただしく数値が表示される方法を質問したいです。

###発生している問題・エラーメッセージ

コンパイルは成功したのに、正常な結果が出力されない。
エラーメッセージ
x=-inf,-nan

###該当のソースコード
#include<stdio.h>
#include<math.h>

int main(void)
{
float a,b,c,dis,x1,x2,real,imag;

printf("二次方程式の定数を入力してください。\n"); printf("a = :"); scanf("%f",&a); printf("b = :"); scanf("%f",&b); printf("c = :"); scanf("%f",&c); dis = b*b-4*a*c; if(a=0){ x1 = -c/b; printf("x = %f",x1); } else{ if(dis > 0){ x1 = (-b+sqrt(dis)) / (2*a); x2 = (-b-sqrt(dis)) / (2*a); printf("二次方程式の解: x = %.2f , %.2f\n",x1,x2); } else if(dis == 0){ x1 = x2 = -b / (2*a); printf("二次方程式の解: x = %.2f",x1); } else{ real = -b / (2*a); imag = sqrt(-dis) / (2*a); printf("二次方程式の解: x = %.2f + %.2f i , %.2f ー %.2f i",real,imag,real,imag); } }

return 0;
}
###試したこと
課題に対してアプローチしたことを記載してください
思いつくことすべて

###補足情報(言語/FW/ツール等のバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

本質問はC#となっていますが、コードの内容からCではないかと推測しています。
以降はC言語を前提として回答します。

if(a=0){

上記で変数aに0が代入されています。
そのため、常にelseに分岐し、0除算が発生しています。
if文の条件式をa == 0とするとどうなるでしょうか。

また、適切な設定が行われていれば、上記のような点はコンパイラから警告を受け取ることができるのではないかと思います。
開発環境が提示されていないので具体的な手順は案内できませんが、例えばgccであれば、-Wallオプションなどを使用されるとよいかと思います。

投稿2017/10/22 21:53

編集2017/10/22 21:54
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問