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

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

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

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

Q&A

解決済

1回答

1143閲覧

2次方程式の解の個数を表示するプログラム+α

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2017/10/18 12:46

###前提・実現したいこと
Atomでコンパイルし,コマンドプロンプトで実行しています.
2次方程式の解の個数の表示と解が1つの時に,その解を入力させて,
それが正しいかどうかを表示するコードを書きたいです.

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

d=0の時の解を入力させて,正しいかどうかを表示するコードを加えたくて,//や/*の部分を 書いて実行したところ,d=0となるa,b,cを入力したにも関わらず(a=1,b=-4,c=4),zeroと表示されました. (本当はoneと表示されるはず!)なにより不思議なのが,//や/*の部分を加えずに,単純に解の個数だけを表示させるコードの時は 先ほどのa,b,cを入力するとoneと表示されることです.

###該当のソースコード

#include <stdio.h> int main(){ double a, b, c, d; double ans; printf("input real number a,b,c\n"); printf("a:"); scanf("%f", &a); printf("b:"); scanf("%f", &b); printf("c:"); scanf("%f", &c); d=(b*b)-(4*a*c); if(d>0){ printf("two \n"); }else if(d==0){ printf("one\n"); //以下の非表示部分を表示するとoneであってもzeroになる /*printf("input answer:"); scanf("%f", ans); if(ans==-b/2*a){ printf("Solved\n"); }else{ printf("Try again\n"); }*/ }else if(d<0){ printf("zero\n"); } return 0; }

###試したこと
if else文の中にif elseを書いたのがまずいのかなと思い,//や/*のうち,上2行のprintfと
scanfの文だけを打って実行しましたが,やはりoneと表示されるa,b,cを打ったにも関わらず
zeroと表示されました.

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

scanf("%f", ans);

ansに&をつけ忘れているようです。

投稿2017/10/18 14:30

pierre_3

総合スコア60

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

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

退会済みユーザー

退会済みユーザー

2017/10/18 21:30

かなり初歩的なミスなのに全く気づきませんでした... 教えてくださってありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問