【初心者向け】C言語で二次方程式の根(解)を求めるプログラムの作り方
問題
ソフトウェア開発の手法をC言語に適用し、二次方程式の根(解)を求めるプログラムを作成します。
解決策
- 二次方程式 ax2 + bx + c = 0 の根を求めます。
- 二次方程式には必ず2つの根が存在します。
分析
入力:係数 a、b、c の値
出力:根 r1、r2 の値
手順(解の公式)
二次方程式の根は、以下の「解の公式」によって求めることができます。
$r_{1}=\frac{-b+\sqrt{b^2-4ac}}{2a}$
$r_{2}=\frac{-b-\sqrt{b^2-4ac}}{2a}$
ここで、b2 − 4ac を判別式と呼びます。判別式の値によって、根の性質が次のように変わります。
- 判別式 > 0:異なる2つの実数解を持つ
- 判別式 = 0:重解(等しい実数解)を持つ
- 判別式 < 0:虚数解(実数解なし)を持つ
設計(アルゴリズム)
- 開始
- a、b、c の値を読み込む
- 判別式 d = b2 − 4ac を計算する
- d > 0 の場合:
- r1 = (−b + √d) / (2a)
- r2 = (−b − √d) / (2a)
- d = 0 の場合:
- r1 = r2 = −b / (2a) を計算する
- r1、r2 の値を出力する
- d < 0 の場合は「根は虚数である」と出力する
- 終了

実装コード
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main() {
float a, b, c, r1, r2, d;
printf("enter the values of a b c");
scanf("%f %f %f", &a, &b, &c);
/* 判別式を計算 */
d = b * b - 4 * a * c;
if (d > 0) {
r1 = -b + sqrt(d) / (2 * a);
r2 = -b - sqrt(d) / (2 * a);
printf("The real roots = %f %f", r1, r2);
}
else if (d == 0) {
r1 = -b / (2 * a);
r2 = -b / (2 * a);
printf("roots are equal = %f %f", r1, r2);
}
else {
printf("Roots are imaginary");
}
getch();
return 0;
}コードのポイント
math.hをインクルードすることで、平方根を計算するsqrt()関数を使用できます。- 判別式 d の値に応じて、if〜else if〜else 文で処理を分岐させています。
- 浮動小数点数を読み込むため、
scanfでは書式指定子%fを使用しています。
テスト
Case 1: enter the values of a b c: 1 4 3
r1 = -1
r2 = -3
Case 2: enter the values of a b c: 1 2 1
r1 = -1
r2 = -1
Case 3: enter the values of a b c: 1 1 4
Roots are imaginary上記のテスト結果から、Case 1 では異なる2つの実数解、Case 2 では重解、Case 3 では虚数解と正しく判定されていることが確認できます。
-
【C++入門】二分木の最大の深さ(高さ)を求めるプログラムの作成方法
本記事では、二分木(バイナリツリー)が与えられたときに、その木の最大の深さ(高さ)を求めるプログラムをC++で作成する方法を解説します。問題の理解まず、具体的な例を使って問題を確認しましょう。上図の二分木の高さは 3 です。アプローチ:再帰による高さの計算木の最大の高さを求める基本的な考え方は次のとおりです。着目しているノードの左部分木と右部分木の高さをそれぞれ求める両者のうち大きい方に1を加えた値が、そのノードを根とする木の高さになるこの処理は再帰的に行われます。木の末端(葉)のノードに到達するまで再帰呼び出しが続き、戻りながら各部分木の高さに1ずつ加算していくことで、最終的に木全体の高さが
-
Windows 11でIPアドレスを確認する方法|コマンドプロンプトと設定アプリの手順
インターネット接続に不具合が生じたとき、さまざまな対処法を試す中で、自分のPCのIPアドレスを把握しておくと意外と役立ちます。 IPアドレス(Internet Protocol Address)とは、インターネット上でデバイスを識別するための一意な数値アドレスのことです。機械にとっての「郵便番号」と考えると分かりやすいでしょう。現実世界で郵便番号が住所を特定するように、IPアドレスはコンピューターの場所を示し、デバイス同士がお互いを見つけて通信できるようにしています。 Windows 11でIPアドレスを確認する方法は複数あります。まずは最もシンプルな方法である「コマンドプロンプト」を使う