2次方程式ax^2+bx+c=0について、a,b,cをキーボードから入力して解を求めるプログラムを作成せよ
A=0を入力するまでは繰り返し計算を行うものとする
プロジェクト名はK22-学生番号とせよ
結果を書き込むファイル名はK22-学籍番号.datとせよ
入力するa,b,cの組は子¥5固定で、3種類すべての解を含むように選ぶこと
教えてください。学校ではdoubleではなくfloatでやっていたのですが、その方法もわかれば教えていただきたいです。
答え:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main() {
float a, b, c, d;
FILE *f;
(f = fopen("K22-学籍番号.dat", "w")) == NULL || exit(-1);
while (1) {
scanf("%f%f%f", &a, &b, &c);
if (a == 0) break;
(d = b * b - 4 * a * c) > 0 && fptintf(f, "%f\n%f\n", (-b + sqrt(d)) / 2, (-b - sqrt(d)) / 2) || d < 0 && fptintf(f, "%f+/-%f\n", -b / 2, sqrt(-d) / 2) || fprintf("%f\n", -b / 2);
}
fclose(f);
return 0;
}
補足の質問:
前回はまだ日数があったので他の回答を待ってました。今回は文字数制限があったので端的に聞いてしまいました。以後気をつけます。お三方ともどうもありがとうございました。この質問・回答は役に立ちましたか?
答え:
どこがわからないの?
解の求め方?、ファイルの書き方?、入力の求め方?
解の求め方は
単純に解の公式を使えば良いんじゃないかな
ax^2 + bx +c = 0の時 x = (-b +- (b^2 -4 a*c)^(1/2))/ 2*a;
虚数解の時も考えて
d = b^2 -4 a*c;
を0以下、0、0以上と分けてやる必要があるね
解はどうやって表示するの?(i)分数と根号を使って表示するの?
(ii)虚数解以外は小数で表示して、虚数解の時はa+bi(ただしa,bは実数)で表示するの?
(i)なら出来るだけルートの中身を外に出してやらなければならないし
約分する必要がある
他は答える:
royal_uni_teaさんは優しすぎますよ^^;
前回の質問で答えが合ってる合ってないは別にして多少なりとも
分かる部分はあったはずです。
それなのになんの評価もせず今回もご自身で考えた部分も示さず
教えてくださいではいけませんよ。
自分の代わりに用紙に答え書いてください。と言ってる様なもんです。
ウェブサイトのユーザーによる情報ポスト、JPQA.comのない保証の正しさ.