반응형
안녕하세요 성조입니다.
오늘도 이전에 풀었던 소스코드를 하나 갖고 왔습니다.
6가지 조건을 만족하는 정사각형의 한 변의 길이를 구하는 문제입니다.
하나하나 주석을 달았기 때문에 소스코드 통 하나, 주석으로 달았던 내용 하나를 올리고 포스팅을 끝내겠습니다.
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
|
#include <stdio.h>
unsigned short each_sum(unsigned short area, unsigned short circum);
unsigned short square_root(unsigned short circum);
unsigned short main(){
unsigned short circum = 0, area = 0, side = 0;
for (side = 1; side < 10; side++){
circum = side * 4;
area = side * side;
if (area > circum){
if (circum % 12 == 0 || area % 12 == 0){
if ((circum % 2 == 0 && area % 2 != 0) || circum % 2 != 0 && area % 2 == 0){
if (each_sum(area, circum)){
if (square_root(circum)){
printf("\n\t");
printf("한 변의 길이 : %d", side);
printf("\n");
break;
}
}
}
}
}
}
}
unsigned short each_sum(unsigned short area, unsigned short circum){
unsigned short sum_area = 0, sum_circum = 0;
sum_area = area / 10 + area % 10;
sum_circum = circum / 10 + circum % 10;
if (sum_area == sum_circum){
return 1;
}
else {
return 0;
}
}
unsigned short square_root(unsigned short circum){
for (unsigned short i = 1; i < 7; i++){
if (i * i == circum){
return 1;
}
}
return 0;
}
|
cs |
조건
다음의 조건을 만족하는 정사각형의 한 변의 길이를 구하는 프로그램을 for를 이용하여 작성하라.
1. 넓이는 100cm^2보다 작다.
2. 둘레의 길이 또는 넓이는 12의 배수이다.
3. 둘레의 길이와 넓이는 모두 짝수는 아니다.
4. 이 정사각형의 넓이는 둘레의 길이보다 크다.
5. 둘레의 길이의 각 자리의 숫자의 합은 넓이의 각 자리의 합과 같다.
6. 둘레의 길이를 나타내는 숫자와 넓이를 나타내는 숫자는 모두 완전 제곱수이다.
코드
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#include <stdio.h>
// 둘레,넓이의 각 자리수의 합을 구하는 함수
unsigned short each_sum(unsigned short area, unsigned short circum);
// 완전제곱근인지 체크하는 함수
unsigned short square_root(unsigned short circum);
unsigned short main()
{
// 둘레 변수
unsigned short circum = 0;
// 넓이 변수
unsigned short area = 0;
// 한 변의 길이
unsigned short side = 0;
// 1. 넓이는 100cm^2보다 작다 = 한 변은 10cm미만,둘레는 40미만
for (side = 1; side < 10; side++)
{
// 정사각형의 둘레 = 변의 길이 * 4
circum = side * 4;
// 정사각형의 넓이 = 가로*세로
area = side * side;
// 4. 넓이는 둘레보다 크다. -> 넓이 > 둘레
if (area > circum)
{
// 2. 넓이 또는 둘레가 12의 배수
if (circum % 12 == 0 || area % 12 == 0)
{ // 3.둘레 짝수, 넓이 홀수 OR(A 이거나 B인 경우) 둘레 홀수, 넓이 짝수
if ((circum % 2 == 0 && area % 2 != 0) || circum % 2 != 0 && area % 2 == 0)
{
//5. 각 자리수의 합이 같으면 if문 실행
if (each_sum(area, circum))
{
// 넓이 -> side*side 6. 정사각형에선 넓이는 완전제곱근.
if (square_root(circum))
{
printf("\n\t");
printf("한 변의 길이 : %d", side);
printf("\n");
break;
}
}
}
}
}
}
}
//5. 둘레의 길이의 각 자리의 숫자의 합은 넓이의 각 자리의 합과 같다.
unsigned short each_sum(unsigned short area, unsigned short circum)
{
// 앞자리 뒷자리를 잘라서 합친 넓이 값
unsigned short sum_area = 0;
// 앞자리 뒷자리를 잘라서 합친 둘레 값
unsigned short sum_circum = 0;
// 숫자의 앞자리 수 area /10 + 뒷자리 수 area % 10 (아래 circum 동)
sum_area = area / 10 + area % 10;
sum_circum = circum / 10 + circum % 10;
// 각 자리수의 합이 같으면 1 반환
if (sum_area == sum_circum)
{
// 1 반환
return 1;
}
// 각 자리수의 합이 다르면 0 반환
else
{
// 0 반환
return 0;
}
}
// 6. 둘레의 길이를 나타내는 숫자와 넓이를 나타내는 숫자는 모두 완전제곱수이다.
unsigned short square_root(unsigned short circum)
{
for (unsigned short i = 1; i < 7; i++)
{
// circum이 완전제곱근이면 1반환 아니면 0반환
if (i * i == circum)
{
// 1 반환
return 1;
}
}
// 0 반환
return 0;
}
|
길게 좋은 글을 많이 작성하고 싶은데 또 정신없이 며칠을 보내느라 제대로 학습하고 공부한 내용을 정리하기 어려웠네요
크리스마스도 지인과 함께 보냈는데 개인적으로는 잘 보낸 것 같습니다. 다음 포스팅 때는 조금 더 제대로 좋은 글과 푼 문제를 갖고 오겠습니다 ㅎㅎ
코로나 조심하세요!
반응형
'C, C++ > C' 카테고리의 다른 글
[C언어] 1을 1개 2를 2개... 출력하는 프로그램, 1, 1 2, 1 2 3,... 출력하는 프로그램 (0) | 2020.12.31 |
---|---|
[C언어] 카프리카수 구하기, 네 자리 Kaprika수 구하기 프로그램 (2) | 2020.12.29 |
[C언어] *로 빈 사각형과 빈 공간 다이아몬드 출력하기 (2) | 2020.12.20 |
[C언어 ] 라이프니츠 공식(Leibniz formula)을 50만항을 계산하는 프로그램 (0) | 2020.12.19 |
[C언어] 소수 판별하는 소스코드 (0) | 2020.12.14 |