본문 바로가기
프로그램/C언어 1000제

C언어 73제] C언어 콘서트 CHAPTER 9 Programming 3 포인터로 2차방정식의 근 구하기 p370

by 건티 2021. 12. 23.
728x90

출처 : 반크_세계무형유산 아리랑, 판소리

 

참고풀이]

//Dev-C++ 5.11로 작업함.
#include <stdio.h>
#include <stdlib.h> //system()
#include <math.h> //sqrt()

void quadratic(int a, int b, int c, double *xplus, double *xminus)
{
   *xminus=(-(double)b-sqrt((double)(b*b)-(double)(4*a*c)))/(double)(2*a);
   *xplus=(-(double)b+sqrt((double)(b*b)-(double)(4*a*c)))/(double)(2*a);
}

void equal(int a, int b, int c, double *xequal)
{
   *xequal=(double)b/(-2*(double)a);
}

int main()
{
   double x,y;
   int ma, mb, mc;

   printf("2차 방정식의 계수를 입력하시오:\n");
   printf("a : "); scanf("%d%*c",&ma);//%*c:enter key
   printf("b : "); scanf("%d%*c",&mb);
   printf("c : "); scanf("%d%*c",&mc);

   system("cls");
   if(mb*mb-4*ma*mc>0) //서로 다른 두 실근이 존재 
   {
      quadratic(ma, mb, mc, &x, &y);

      printf("\n2차 방정식의 근은 두 개가 존재합니다.\n");
      printf("첫번째 실근 : %lf\n", x);
      printf("두번째 실근 : %lf\n", y);
   }
   else if(mb*mb-4*ma*mc==0) //같은 실근 1개 존재(중근) 
   {
      equal(ma, mb, mc, &x);

      printf("\n2차 방정식의 근은 한 개가 존재합니다.\n");
      printf("중 근=%lf\n",x);
   }
   else //실근이 존재하지 않는다(허근) 
      printf("\n2차 방정식의 근이 없습니다.\n");

   return 0;
}

 

참고풀이 결과]

 

 

 

참고비교]

C언어 64제] CHAPTER 8 연습문제 8과 비교하여 보세요.

 

 

 

 

대한민국의 아름다운 영토, 독도의 봄

 

반응형

댓글