반응형
안녕하세요 성조입니다.
이전에 C언어 2차 방정식을 풀었던 문제를 올립니다.
지문
2차 방정식의 판별식을 구하고, 판별식에 따른 상황 및 근을 구하여 출력하는 프로그램을
switch ~ case로 작성하라.
정수 변수(discriminant:판별식)를 하나 두고, 판별식이 0보다 작으면 0을, 0이면 1을, 0보다 크면 2를 저장해 둔다.
그리고 이 변수에 따른 switch ~case를 작성하여,
판별식이 0보다 작으면 "2개의 허근", 0이면 "1개의 실근", 0보다 크면"2개의 실근"이라고 출력한다.
또한 근이 존재할 때 근도 구하여 출력한다.
단, 2차 방정식은 ax^2+bx+c=0이며, 계수 a,b,c를 scanf()함수로 입력받아 판별식 b^2-4ac를 구한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
#include <stdio.h>
#include <math.h> //sqrt- 루트, abs- 절대값 ,pow-제곱 같은 함수를 사용하기 위해서
int main()
{
double a = 0, b = 0, c = 0; //입력 값
double x = 0, y = 0;
int D = 0; //판별식 정수형으로 초기화는 차후 switch문에 들어가서
printf("\n\n\t");
printf("a값을 입력하세요 : ");
scanf_s("%lf", &a);
printf("\t");
printf("b값을 입력하세요 : ");
scanf_s("%lf", &b);
printf("\t");
printf("c값을 입력하세요 : ");
scanf_s("%lf", &c);
D = (b * b) - (4 * a * c); //판별식 공식
printf("\n\t");
printf("판별식 값 : %d", D);
printf("\n\n\t");
//판별식 D값을 문제에 맞게 저장
if (D < 0)
{
D = 0;
}
else if (D == 0)
{
D = 1;
}
else
{
D = 2;
}
// 근 구하기
switch (D)
{
case 0:
printf("허근입니다.");
break;
case 1: // 중근
printf("1개의 중근입니다.");
printf("\n\t");
printf("중근 : %lf ", x = (-b / (2 * a))); // 한개의 근을 구하는 공식
break;
case 2:
/* 서로 다른 실근 2개
1.-b+루트b/2a
2.-b-루트b/2a
*/
printf("2개의 실근입니다.");
printf("\n\t");
printf("1번 실근 :%lf ", x = (-b + sqrt(b)) / (2 * a)); // 양수로 한번
printf("\n\t");
printf("2번 실근 :%lf ", y = (-b - sqrt(b)) / (2 * a)); // 음수로 한번
break;
default:
break;
}
printf("\n");
return 0;
}
|
[풀이]
지문과 같이 풀이를 코드화 하면 된다.
2차 방정식 문제의 경우 수학적 풀이법을 그대로 적용하면 되는 문제이다.
자세한 코드는 주석으로도 이해할 수 있다.
문제에 오타나 이상한 점이 존재하면 댓글 부탁드리겠습니다.
다음 포스팅 때 뵙겠습니다!
감사합니다.
반응형
'C, C++ > C' 카테고리의 다른 글
[C언어] 삼항(조건) 연산자를 이용하여 5개의 데이터를 입력받고 최솟값 구하기 (0) | 2020.11.01 |
---|---|
[C언어] 관계, 논리, 삼항(조건)연산자를 혼합한 C프로그래밍 (0) | 2020.10.31 |
[C언어] 관계(비교)연산자를 사용하여 두 데이터를 비교하기 (0) | 2020.10.30 |
[C언어] C언어 문제풀이02 (0) | 2020.06.11 |
[C언어] C언어 문제풀이 모음 (0) | 2020.06.06 |