ID非公開さん
2022/6/29 14:50
1回答
2 次方程式 ax2 + bx + c = 0 の係数 double a,b,c を保持する型(構造体)quad t を 作り、quad t 変数で 2 次方程式を表すものとする。以下の関数群を作れ。簡単のた め、判別式が非負であるとしてよい。
2 次方程式 ax2 + bx + c = 0 の係数 double a,b,c を保持する型(構造体)quad t を 作り、quad t 変数で 2 次方程式を表すものとする。以下の関数群を作れ。簡単のた め、判別式が非負であるとしてよい。 • double quad det(quad t q) は方程式 q の判別式 (b2 − 4ac) を返す。 • double quad large sol(quad t q) は方程式 q の大きい方の解を返す。 • double quad small sol(quad t q) は方程式 q の小さい方の解を返す。 • quad t quad param(double alpha, double beta) は α と β を解にもつ 2 次方程式(の係数)を返す。(x − α)(x − β) = x2 − (α + β)x + αβ を利用してよい。 これを教えてほしいです。
C言語関連・17閲覧
ベストアンサー
#include <math.h> #include <stdio.h> typedef struct quad { double a; double b; double c; } quad_t; double quad_det(quad_t); double quad_large_sol(quad_t); double quad_small_sol(quad_t); quad_t quad_param(double, double); int main(void) { // ダミー } double quad_det(quad_t q) { double rc = q.b * q.b - r * q.a * q.c; return rc; } double quad_large_sol(quad_t q) { double det, rc; det = quad_det(q); rc = (-q.b + sqrt(det)) / (2 * q.a); return rc; } double quad_small_sol(quad_t q) { double det, rc; det = quad_det(q); rc = (-q.b - sqrt(det)) / (2 * q.a); return rc; } quad_t quad_param(double alpha, double beta) { quad_t rc; rc.a = 1; rc.b = -(alpha + beta); rc.c = alpha * beta; return rc; }
質問者からのお礼コメント
ありがとうございます!
お礼日時:6/29 20:59