Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++로 두 동심원 사이의 면적 계산하기: 원리부터 코드 구현까지


동심원이란 무엇일까요?

동심원(concentric circle)은 한 원이 다른 원의 내부에 위치하면서 두 원이 동일한 중심을 공유하고, 반지름의 길이만 서로 다른 경우를 말합니다. 즉, r1과 r2(r2>r1)처럼 크기가 다른 두 반지름을 가진 원들이 같은 중심을 기준으로 겹쳐 있는 형태입니다. 이때 두 동심원 사이에 생기는 고리 모양의 영역은 '환(annulus)'이라고 부릅니다.

다음은 동심원을 나타낸 그림입니다.

C++로 두 동심원 사이의 면적 계산하기: 원리부터 코드 구현까지

문제 상황

반지름이 각각 r1과 r2(r2>r1)로 서로 다른 두 개의 동심원이 주어졌습니다. 이때 아래 그림에서 파란색으로 강조된 부분, 즉 두 원 사이의 면적을 구하는 것이 목표입니다.

두 원 사이의 면적은 생각보다 간단하게 구할 수 있습니다. 바깥쪽 큰 원의 넓이에서 안쪽 작은 원의 넓이를 빼면 됩니다.

큰 원의 반지름이 r2, 작은 원의 반지름이 r1이라면 면적은 다음과 같이 계산됩니다.

C++로 두 동심원 사이의 면적 계산하기: 원리부터 코드 구현까지

입력 · 출력 예시

입력 -: r1=3 r2=4
출력 -: 주어진 두 동심원 사이의 면적 : 21.98

알고리즘

시작
1단계 -> 매크로를 정의한다
    #define pi 3.14
2단계 -> 두 동심원 사이의 면적을 구하는 함수를 선언한다
    double calculateArea(int x, int y)
    double outer = pi * x * x 로 설정 (바깥원의 넓이)
    double inner = pi * y * y 로 설정 (안쪽원의 넓이)
    return outer-inner 반환
3단계 -> main() 함수에서
    변수를 int x = 4, int y = 3 으로 선언한다
    calculateArea(x, y)의 결과를 출력한다
종료

C++ 구현 코드

#include <bits/stdc++.h>
#define pi 3.14
using namespace std;
// 두 동심원 사이의 면적을 구하는 함수
double calculateArea(int x, int y){
    double outer = pi * x * x;   // 바깥원의 넓이
    double inner = pi * y * y;   // 안쪽원의 넓이
    return outer-inner;
}
int main(){
    int x = 4;  // 바깥원(큰 원)의 반지름
    int y = 3;  // 안쪽원(작은 원)의 반지름
    cout << "두 동심원 사이의 면적 :" << calculateArea(x, y);
    return 0;
}

실행 결과

두 동심원 사이의 면적 :21.98

동작 원리

프로그램의 계산 과정을 살펴보면 다음과 같습니다. 바깥원의 반지름이 4이므로 넓이는 3.14 × 4² = 50.24이고, 안쪽원의 반지름이 3이므로 넓이는 3.14 × 3² = 28.26입니다. 두 넓이의 차인 50.24 − 28.26 = 21.98이 곧 두 동심원 사이의 면적이 되어 화면에 출력됩니다.