समस्या
सॉफ्टवेयर डेवलपमेंट मेथड लागू करके C में द्विघात समीकरण के मूल ज्ञात करना।
विश्लेषण
इनपुट: a, b, c मान (समीकरण: ax² + bx + c = 0)
आउटपुट: r1, r2 मूल
प्रक्रिया
रूट्स के सूत्र:
r₁ = (-b + √(b² - 4ac)) / 2a r₂ = (-b - √(b² - 4ac)) / 2a
एल्गोरिदम
- शुरुआत
- a, b, c पढ़ें
- d = b² - 4ac की गणना करें (डिस्क्रिमिनेंट)
- यदि d > 0:
- r1 = (-b + √d) / 2a
- r2 = (-b - √d) / 2a
- r1, r2 प्रिंट करें
- अन्यथा यदि d = 0:
- r1 = r2 = -b / 2a
- r1, r2 प्रिंट करें
- अन्यथा (d < 0): "Roots are imaginary" प्रिंट करें
- रुकें
C प्रोग्राम
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, r1, r2, d;
printf("Enter 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("Real roots: %f, %f", r1, r2);
} else if (d == 0) {
r1 = r2 = -b / (2*a);
printf("Equal roots: %f, %f", r1, r2);
} else {
printf("Roots are imaginary");
}
return 0;
}
टेस्ट केसेस
Case 1: a=1, b=4, c=3 d = 16 - 12 = 4 > 0 r1 = (-4 + 2)/2 = -1 r2 = (-4 - 2)/2 = -3 Output: Real roots: -1.000000, -3.000000 Case 2: a=1, b=2, c=1 d = 4 - 4 = 0 r1 = r2 = -2/2 = -1 Output: Equal roots: -1.000000, -1.000000 Case 3: a=1, b=1, c=4 d = 1 - 16 = -15 < 0 Output: Roots are imaginary
नोट
मूल कोड में ऑपरेटर प्रीसिडेंस एरर था: -b+sqrt(d)/(2*a) गलत है। सही: (-b + sqrt(d)) / (2*a)।