কম্পিউটার টিউটোরিয়াল

সি প্রোগ্রাম দিয়ে দ্বিঘাত সমীকরণের রুট (Roots) বের করা

সমস্যা: দ্বিঘাত সমীকরণের রুট খুঁজে বের করা

দ্বিঘাত সমীকরণ: ax² + bx + c = 0। এর দুটি রুট থাকে।

ফর্মুলা

r₁ = (-b + √(b² - 4ac)) / 2a
r₂ = (-b - √(b² - 4ac)) / 2a

এখানে D = b² - 4ac = ডিসক্রিমিন্যান্ট (Discriminant)।

অ্যালগরিদম

  1. শুরু
  2. a, b, c ইনপুট নিন
  3. D = b² - 4ac ক্যালকুলেট করুন
  4. যদি D > 0: দুটি বাস্তব ও ভিন্ন রুট
  5. যদি D == 0: দুটি বাস্তব ও সমান রুট
  6. যদি D < 0: কাল্পনিক (imaginary) রুট
  7. শেষ

সি প্রোগ্রাম

#include <stdio.h>
#include <math.h>

int main() {
    float a, b, c, r1, r2, d;

    printf("Enter 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 and distinct roots: %.2f, %.2f\n", r1, r2);
    } else if (d == 0) {
        r1 = r2 = -b / (2*a);
        printf("Real and equal roots: %.2f\n", r1);
    } else {
        printf("Roots are imaginary\n");
        // কাল্পনিক রুট দেখাতে চাইলে:
        float real = -b / (2*a);
        float imag = sqrt(-d) / (2*a);
        printf("Roots: %.2f + %.2fi, %.2f - %.2fi\n", real, imag, real, imag);
    }

    return 0;
}

টেস্ট কেস ও আউটপুট

ইনপুট (a b c)ডিসক্রিমিন্যান্টআউটপুট
1 4 3D = 16-12 = 4 > 0r₁ = -1, r₂ = -3
1 2 1D = 4-4 = 0r₁ = r₂ = -1
1 1 4D = 1-16 = -15 < 0Imaginary roots

নোট

  • math.h ইনক্লুড করুন এবং কম্পাইল টাইমে -lm লিংক করুন (GCC: gcc prog.c -lm)।
  • a != 0 হতে হবে (অন্যথায় লিনিয়ার সমীকরণ হবে)।
  • ফ্লোটিং পয়েন্ট প্রিসিশনের জন্য double ব্যবহার করা ভালো।
  1. কোঅর্ডিনেট কোন কোয়াড্রেন্টে আছে তা বের করার সি প্রোগ্রাম

  2. লিংকড লিস্টের দৈর্ঘ্য বের করার C প্রোগ্রাম

  3. C++-এ ট্রির ম্যাক্সিমাম ডেপথ বা হাইট বের করার প্রোগ্রাম

  4. আপনার উইন্ডোজ ১১ PC-এর IP অ্যাড্রেস খুঁজে বের করুন: ধাপে ধাপে গাইড