#include <stdio.h>
#include <math.h>
#include<Windows.h>
#pragma warning (disable : 4996)
void main()
{
	double a, b, c;	// 방정식의 계수 선언
	double x, x1, x2;	// 방정식의 해를 위한 변수 선언
	// 방정식의 계수들을 입력받아서 해를 구하는 반복문
	while (1)
	{
		printf("a, b, c 값을 입력하라.\n");
		// 방정식의 계수인 a를 입력받음
		printf("a = ");
		scanf("%lf", &a);
		// 방정식의 계수인 b를 입력받음
		printf("b = ");
		scanf("%lf", &b);
		// 방정식의 계수인 c를 입력받음
		printf("c = ");
		scanf("%lf", &c);
		// 방정식의 계수인 a가 0인 경우:
		if (a == 0)
		{
			// 방정식의 계수인 b가 0인 경우:
			if (b == 0)
			{
				// 방정식의 계수인 c가 0인 경우 :
				if (c == 0)
					printf("부정\n");
				// 방정식의 계수인 c가 0이 아닌 경우 :
				else
					printf("불능\n");
			}
			// 방정식의 계수인 b가 0이 아닌 경우:
			else
			{
				x = c / b;
				printf("일차방정식. \n x=%g\n", x);
			}
		}
		// 방정식의 계수인 a가 0이 아닌 경우 :
		else
		{
			// 판별식 D가 0보다 큰 경우 실근 2개 존재
			if (b * b - 4 * a * c > 0)
			{
				x1 = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
				x2 = (-b - sqrt(b * b - 4 * a * c)) / (2 * a);
				printf("2개의 실근\n x1 = %g x2 = %g\n", x1, x2);
			}
			else
			{
				// 판별식 D가 0인 경우 중근 1개 존재
				if (b * b - 4 * a * c == 0)
				{
					x = -b / (2 * a);
					printf("중근\n x=%lf\n", x);
				}
				// 판별식 D가 0보다 작은 경우 허근 존재
				else
					printf("허근\n");
			}
		}
	}
	system("PAUSE");
}