Untitled

 avatar
unknown
c_cpp
a year ago
2.5 kB
2
Indexable
#define _CRT_SECURE_NO_WARNINGS

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

int main(void) {

    int a, b, c;
    float delta, x1, x2, absdelta, re1, re2, im1, im2; // creating a variables

    printf("This program will solve the quadratic equation of the form: "); // intro
    printf("ax^2+bx+c=0\n");

    printf(" \n"); // just a gap

    printf("Enter the value of a here: "); // asking for the value of a
    scanf("%d", &a);
    printf("Enter the value of b here: "); // asking for the value of b
    scanf("%d", &b);
    printf("Enter the value of c here: "); // asking for the value of c
    scanf("%d", &c);

    if (a == 0) {
        if (b == 0) { // linear equation
            if (c == 0) {
                printf("\n");
                printf("x can be any number");
            }
            else {
                printf("\n");
                printf("there is no solution");
            }
        }
        else {
            printf("\n");
            printf("x = %f\n", -(float)c / b);
        }
    }

    else {
        printf("\n"); // just a gap

        delta = pow((float)b, 2) - 4 * (float)a * (float)c; // computing the discriminant

        printf("The discriminant is: %f\n", delta); // printing the discriminant value

        printf("\n"); // just a gap

        if (delta > 0) { // checking the value of discriminant (>0)

            x1 = ((-(float)b + sqrt(delta)) / (2 * (float)a)); // computing the first root
            x2 = ((-(float)b - sqrt(delta)) / (2 * (float)a)); // computing the second root

            printf("The roots are: %f and %f\n", x1, x2); // printing the roots
        }

        if (delta == 0) { // checking the value of discriminant (=0)

            x1 = ((-(float)b + sqrt(delta)) / (2 * (float)a)); // computing the root

            printf("The root is: %f\n", x1); // printing the root
        }

        if (delta < 0) { // checking the value of discriminant (<0)

            absdelta = delta * (-1); // computing the absolute value of diccriminant

            re1 = (-(float)b / (2 * (float)a)); // computing the real parts of the roots
            re2 = (-(float)b / (2 * (float)a));

            im1 = (sqrt(absdelta) / (2 * (float)a)); // computing the imaginary parts of the roots
            im2 = (-sqrt(absdelta) / (2 * (float)a));

            printf("The roots are: %f + %fi and %f + %fi\n", re1, re2, im1, im2); // printing the roots
        }
    }

    printf(" \n"); // just a gap
   // printf("by queth"); // printing my nickname

    return 0;
}
Editor is loading...
Leave a Comment