/* 8. An equation of the form
ax^2 + bx + c = 0
is known as a quadratic equation.The values of a, b, and c in the preceding example
represent constant values. So
4x^2 - 17x - 15 = 0
represents a quadratic equation where a = 4, b = –17, and c = –15.The values of x
that satisfy a particular quadratic equation, known as the roots of the equation, can
be calculated by substituting the values of a, b, and c into the following two
formulas:
If the value of b^2–4ac, called the discriminant, is less than zero, the roots of the
equation, x1 and x2, are imaginary numbers.
Write a program to solve a quadratic equation.The program should allow
the user to enter the values for a, b, and c. If the discriminant is less than
zero, a message should be displayed that the roots are imaginary; otherwise,
the program should then proceed to calculate and display the two roots of
the equation. (Note: Be certain to make use of the squareRoot function that
you developed in this chapter.) */
#include <math.h>
#include <stdio.h>
//function to find absolute value
float absoluteValue (float d)
{
if ( d < 0 )
d = -d;
return d;
}
// Function to compute the square root of a number
float squareRoot (float d)
{
const float epsilon = .00001;
float guess = 1.0;
while ( absoluteValue (guess * guess - d) >= epsilon )
guess = ( d / guess + guess ) / 2.0;
return guess;
}
// quadratic equation function
void qe (float a, float b, float c)
{
float x1, x2;
float d;
d
= (pow (b
, 2) - (4 * a
* c
));
if (d < 0)
printf ("x1 and x2 are imaginary numbers");
x1 = (-b + squareRoot (d)) / (2 * a);
x2 = (-b - squareRoot (d)) / (2 * a);
}
int main (void)
{
float a, b, c;
qe (a, b, c);
return 0;
}
LyogOC4gQW4gZXF1YXRpb24gb2YgdGhlIGZvcm0KYXheMiArIGJ4ICsgYyA9IDAKaXMga25vd24gYXMgYSBxdWFkcmF0aWMgZXF1YXRpb24uVGhlIHZhbHVlcyBvZiBhLCBiLCBhbmQgYyBpbiB0aGUgcHJlY2VkaW5nIGV4YW1wbGUKcmVwcmVzZW50IGNvbnN0YW50IHZhbHVlcy4gU28KIAo0eF4yIC0gMTd4IC0gMTUgPSAwCiAKcmVwcmVzZW50cyBhIHF1YWRyYXRpYyBlcXVhdGlvbiB3aGVyZSBhID0gNCwgYiA9IOKAkzE3LCBhbmQgYyA9IOKAkzE1LlRoZSB2YWx1ZXMgb2YgeAp0aGF0IHNhdGlzZnkgYSBwYXJ0aWN1bGFyIHF1YWRyYXRpYyBlcXVhdGlvbiwga25vd24gYXMgdGhlIHJvb3RzIG9mIHRoZSBlcXVhdGlvbiwgY2FuCmJlIGNhbGN1bGF0ZWQgYnkgc3Vic3RpdHV0aW5nIHRoZSB2YWx1ZXMgb2YgYSwgYiwgYW5kIGMgaW50byB0aGUgZm9sbG93aW5nIHR3bwpmb3JtdWxhczoKSWYgdGhlIHZhbHVlIG9mIGJeMuKAkzRhYywgY2FsbGVkIHRoZSBkaXNjcmltaW5hbnQsIGlzIGxlc3MgdGhhbiB6ZXJvLCB0aGUgcm9vdHMgb2YgdGhlCmVxdWF0aW9uLCB4MSBhbmQgeDIsIGFyZSBpbWFnaW5hcnkgbnVtYmVycy4KV3JpdGUgYSBwcm9ncmFtIHRvIHNvbHZlIGEgcXVhZHJhdGljIGVxdWF0aW9uLlRoZSBwcm9ncmFtIHNob3VsZCBhbGxvdwp0aGUgdXNlciB0byBlbnRlciB0aGUgdmFsdWVzIGZvciBhLCBiLCBhbmQgYy4gSWYgdGhlIGRpc2NyaW1pbmFudCBpcyBsZXNzIHRoYW4KemVybywgYSBtZXNzYWdlIHNob3VsZCBiZSBkaXNwbGF5ZWQgdGhhdCB0aGUgcm9vdHMgYXJlIGltYWdpbmFyeTsgb3RoZXJ3aXNlLAp0aGUgcHJvZ3JhbSBzaG91bGQgdGhlbiBwcm9jZWVkIHRvIGNhbGN1bGF0ZSBhbmQgZGlzcGxheSB0aGUgdHdvIHJvb3RzIG9mCnRoZSBlcXVhdGlvbi4gKE5vdGU6IEJlIGNlcnRhaW4gdG8gbWFrZSB1c2Ugb2YgdGhlIHNxdWFyZVJvb3QgZnVuY3Rpb24gdGhhdAp5b3UgZGV2ZWxvcGVkIGluIHRoaXMgY2hhcHRlci4pICovCiAKI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiAKLy9mdW5jdGlvbiB0byBmaW5kIGFic29sdXRlIHZhbHVlCmZsb2F0IGFic29sdXRlVmFsdWUgKGZsb2F0IGQpCnsKIAogCmlmICggZCA8IDAgKQpkID0gLWQ7CnJldHVybiBkOwp9CiAKLy8gRnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgc3F1YXJlIHJvb3Qgb2YgYSBudW1iZXIKIApmbG9hdCBzcXVhcmVSb290IChmbG9hdCBkKQp7CiAKY29uc3QgZmxvYXQgZXBzaWxvbiA9IC4wMDAwMTsKZmxvYXQgZ3Vlc3MgPSAxLjA7CiAKICAgIHdoaWxlICggYWJzb2x1dGVWYWx1ZSAoZ3Vlc3MgKiBndWVzcyAtIGQpID49IGVwc2lsb24gKQogICAgZ3Vlc3MgPSAoIGQgLyBndWVzcyArIGd1ZXNzICkgLyAyLjA7CiAgICAgCiAgICByZXR1cm4gZ3Vlc3M7Cn0KIAovLyBxdWFkcmF0aWMgZXF1YXRpb24gZnVuY3Rpb24Kdm9pZCBxZSAoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgYykKewpmbG9hdCB4MSwgeDI7CmZsb2F0IGQ7CiAKZCA9IChwb3cgKGIsIDIpIC0gKDQgKiBhICogYykpOwogICAgIAogICAgaWYgKGQgPCAwKQogICAgcHJpbnRmICgieDEgYW5kIHgyIGFyZSBpbWFnaW5hcnkgbnVtYmVycyIpOwogICAgIAogICAgeDEgPSAoLWIgKyBzcXVhcmVSb290IChkKSkgLyAoMiAqIGEpOwogICAgIAogICAgcHJpbnRmKCJ4MSBpcyAlZiIsIHgxKTsKICAgICAKICAgIHgyID0gKC1iIC0gc3F1YXJlUm9vdCAoZCkpIC8gKDIgKiBhKTsKICAgICAgCiAgICBwcmludGYoIngyIGlzICVmIiwgeDIpOwogICAgIAogICAKfQoKaW50IG1haW4gKHZvaWQpCnsKZmxvYXQgYSwgYiwgYzsKIAogICAgcHJpbnRmKCJXaGF0IGlzIGE/OiBcbiIpOwogICAgc2NhbmYoIiVmIiwgJmEpOwogICAgICAgCiAgICBwcmludGYoIldoYXQgaXMgYj86IFxuIik7CiAgICBzY2FuZigiJWYiLCAmYik7CiAKICAgIHByaW50ZigiV2hhdCBpcyBjPzpcbiIpOwogICAgc2NhbmYoIiVmIiwgJmMpOwogICAgCiAgICAgCnFlIChhLCBiLCBjKTsKICAgCiAgcmV0dXJuIDA7IAp9