소개
이 랩에서는 C++ 에서 주어진 숫자가 완전 제곱수인지 판별하는 방법을 배우게 됩니다. 완전 제곱수는 정수를 자기 자신과 곱하여 표현할 수 있는 숫자입니다. 예를 들어, 1, 4, 9, 16, 25 는 각각 1×1, 2×2, 3×3, 4×4, 5×5 로 표현할 수 있으므로 완전 제곱수입니다.
표준 라이브러리의 sqrt() 함수를 사용하여 숫자의 제곱근을 계산하고 완전 제곱수인지 판별하는 C++ 프로그램을 만들 것입니다. 이 랩에서는 함수, 조건문, 수학 연산과 같은 기본적인 C++ 프로그래밍 개념을 소개합니다.
새 C++ 파일 생성 및 필수 라이브러리 포함
이 단계에서는 새로운 C++ 파일을 생성하고 프로그램에 필요한 라이브러리를 포함합니다.
먼저, 프로젝트 디렉토리에 main.cpp라는 새 파일을 생성해 보겠습니다.
- WebIDE 에서 왼쪽 사이드바의 탐색기 아이콘을 클릭합니다.
project폴더를 마우스 오른쪽 버튼으로 클릭하고 "New File"을 선택합니다.- 파일 이름을
main.cpp로 지정하고 Enter 키를 누릅니다.
이제 프로그램에 필요한 라이브러리를 추가해 보겠습니다. 두 개의 주요 라이브러리가 필요합니다.
iostream: 이 라이브러리는 입출력 연산을 위한 기능을 제공합니다.cmath: 이 라이브러리에는 사용할sqrt()함수를 포함한 수학 함수가 포함되어 있습니다.
다음 코드를 main.cpp 파일에 추가합니다.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout << "\nWelcome to the Perfect Square Checker Program\n\n";
// We will add more code here in the next steps
return 0;
}
이 코드는 다음과 같습니다.
- 필요한 라이브러리를 포함합니다.
- 표준 라이브러리 함수 앞에
std::를 쓰지 않도록namespace std를 사용합니다. - 환영 메시지를 표시하는 기본적인
main()함수를 생성합니다. - 프로그램 실행 성공을 나타내기 위해 0 을 반환합니다.
Ctrl+S 를 누르거나 메뉴에서 File > Save 를 선택하여 파일을 저장합니다.
완전 제곱수 확인 함수 구현
이제 숫자가 완전 제곱수인지 판별하는 함수를 만들 것입니다. 완전 제곱수는 정수 제곱근을 갖습니다. 예를 들어, 16 은 제곱근이 정확히 4 이므로 완전 제곱수입니다.
main.cpp 파일의 main() 함수 위에 다음 함수를 추가합니다.
bool isPerfectSquare(int number) {
// Calculate the square root of the number
double squareRoot = sqrt(number);
// Convert the square root to an integer
int intSquareRoot = static_cast<int>(squareRoot);
// A number is a perfect square if squaring its integer square root gives the original number
return (intSquareRoot * intSquareRoot == number);
}
이 함수가 어떻게 작동하는지 이해해 보겠습니다.
- 이 함수는 정수 매개변수
number를 받아 부울 값 (true 또는 false) 을 반환합니다. cmath라이브러리의sqrt()함수를 사용하여 입력 숫자의 제곱근을 계산합니다.static_cast<int>()를 사용하여 제곱근을 정수로 변환하여 소수 부분을 제거합니다.- 숫자가 완전 제곱수이면 정수 제곱근을 자기 자신과 곱하면 원래 숫자가 됩니다.
- 숫자가 완전 제곱수이면 함수는
true를 반환하고, 그렇지 않으면false를 반환합니다.
예를 들어:
- 숫자 16 의 경우:
- sqrt(16) = 4.0
- 4.0 을 정수로 변환하면 4 가 됩니다.
- 4 × 4 = 16, 이는 원래 숫자와 같으므로 16 은 완전 제곱수입니다.
- 숫자 10 의 경우:
- sqrt(10) ≈ 3.16227766
- 3.16227766 을 정수로 변환하면 3 이 됩니다.
- 3 × 3 = 9, 이는 원래 숫자와 같지 않으므로 10 은 완전 제곱수가 아닙니다.
지금까지의 전체 코드는 다음과 같아야 합니다.
#include <iostream>
#include <cmath>
using namespace std;
bool isPerfectSquare(int number) {
// Calculate the square root of the number
double squareRoot = sqrt(number);
// Convert the square root to an integer
int intSquareRoot = static_cast<int>(squareRoot);
// A number is a perfect square if squaring its integer square root gives the original number
return (intSquareRoot * intSquareRoot == number);
}
int main() {
cout << "\nWelcome to the Perfect Square Checker Program\n\n";
// We will add more code here in the next step
return 0;
}
다음 단계로 진행하기 전에 파일을 저장하십시오.
사용자 입력 및 출력을 포함한 Main 함수 완성
이제 main() 함수를 다음과 같이 개선해 보겠습니다.
- 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
- 사용자의 입력을 받습니다.
isPerfectSquare()함수를 사용하여 숫자가 완전 제곱수인지 확인합니다.- 결과에 따라 적절한 메시지를 표시합니다.
다음 코드로 main() 함수를 업데이트합니다.
int main() {
cout << "\nWelcome to the Perfect Square Checker Program\n\n";
int userNumber;
// Prompt the user to enter a number
cout << "Please enter a positive integer: ";
cin >> userNumber;
// Check if the entered number is a perfect square
if (isPerfectSquare(userNumber)) {
int squareRoot = static_cast<int>(sqrt(userNumber));
cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
} else {
cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
}
cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;
return 0;
}
이 코드가 무엇을 하는지 이해해 보겠습니다.
- 사용자 입력을 저장하기 위해 정수 변수
userNumber를 선언합니다. cout를 사용하여 사용자에게 양의 정수를 입력하라는 메시지를 표시합니다.cin을 사용하여 사용자의 입력을 읽고userNumber에 저장합니다.userNumber를 인수로 사용하여isPerfectSquare()함수를 호출합니다.- 숫자가 완전 제곱수인 경우:
- 제곱근을 계산하여
squareRoot에 저장합니다. - 숫자가 완전 제곱수임을 나타내는 메시지를 표시합니다.
- 두 개의 동일한 정수가 곱해져 원래 숫자가 되는 것을 보여줍니다.
- 제곱근을 계산하여
- 숫자가 완전 제곱수가 아닌 경우:
- 숫자가 완전 제곱수가 아님을 나타내는 메시지를 표시합니다.
- 마지막으로 감사 메시지를 표시하고
main()함수에서 반환합니다.
이제 전체 프로그램은 다음과 같아야 합니다.
#include <iostream>
#include <cmath>
using namespace std;
bool isPerfectSquare(int number) {
// Calculate the square root of the number
double squareRoot = sqrt(number);
// Convert the square root to an integer
int intSquareRoot = static_cast<int>(squareRoot);
// A number is a perfect square if squaring its integer square root gives the original number
return (intSquareRoot * intSquareRoot == number);
}
int main() {
cout << "\nWelcome to the Perfect Square Checker Program\n\n";
int userNumber;
// Prompt the user to enter a number
cout << "Please enter a positive integer: ";
cin >> userNumber;
// Check if the entered number is a perfect square
if (isPerfectSquare(userNumber)) {
int squareRoot = static_cast<int>(sqrt(userNumber));
cout << "\nThe number " << userNumber << " is a perfect square!" << endl;
cout << "It is equal to " << squareRoot << " × " << squareRoot << endl;
} else {
cout << "\nThe number " << userNumber << " is not a perfect square." << endl;
}
cout << "\nThank you for using the Perfect Square Checker Program!\n" << endl;
return 0;
}
다음 단계로 진행하기 전에 파일을 저장하십시오.
프로그램 컴파일 및 테스트
이제 C++ 프로그램을 완성했으므로 컴파일하고 실행할 차례입니다. 컴파일은 사람이 읽을 수 있는 코드를 기계가 실행할 수 있는 프로그램으로 변환합니다.
프로그램 컴파일
메뉴에서 "Terminal"을 클릭하고 "New Terminal"을 선택하여 WebIDE 에서 터미널을 엽니다.
터미널에서 프로젝트 디렉토리로 이동합니다.
cd ~/project
g++ 컴파일러를 사용하여 프로그램을 컴파일합니다.
g++ main.cpp -o perfect_square_checker
이 명령은 컴파일러에게 다음을 지시합니다.
- 소스 파일
main.cpp를 가져옵니다. - 이를
perfect_square_checker라는 실행 파일로 컴파일합니다.
컴파일이 성공하면 아무런 출력이 표시되지 않습니다. 오류가 있는 경우 오류 메시지를 읽고 코드의 문제를 수정하고 다시 컴파일을 시도하십시오.
프로그램 실행
프로그램을 성공적으로 컴파일한 후 다음을 사용하여 실행합니다.
./perfect_square_checker
프로그램이 시작되고 양의 정수를 입력하라는 메시지가 표시됩니다.
다양한 입력으로 테스트
프로그램이 올바르게 작동하는지 확인하기 위해 다양한 입력으로 테스트해 보겠습니다.
테스트 케이스 1: 완전 제곱수
메시지가 표시되면 16을 입력합니다. 다음과 유사한 출력이 표시되어야 합니다.
Please enter a positive integer: 16
The number 16 is a perfect square!
It is equal to 4 × 4
Thank you for using the Perfect Square Checker Program!
테스트 케이스 2: 완전 제곱수가 아님
프로그램을 다시 실행하고 메시지가 표시되면 10을 입력합니다. 다음과 유사한 출력이 표시되어야 합니다.
Please enter a positive integer: 10
The number 10 is not a perfect square.
Thank you for using the Perfect Square Checker Program!
테스트 케이스 3: 또 다른 완전 제곱수
프로그램을 다시 실행하고 메시지가 표시되면 25를 입력합니다. 다음과 유사한 출력이 표시되어야 합니다.
Please enter a positive integer: 25
The number 25 is a perfect square!
It is equal to 5 × 5
Thank you for using the Perfect Square Checker Program!
다양한 입력으로 테스트하여 프로그램이 완전 제곱수와 완전 제곱수가 아닌 수를 올바르게 식별하는지 확인할 수 있습니다.
축하합니다! 숫자가 완전 제곱수인지 판별하는 C++ 프로그램을 성공적으로 만들었습니다.
요약
이 랩에서는 숫자가 완전 제곱수인지 판별하는 C++ 프로그램을 성공적으로 만들었습니다. 수행한 작업을 검토해 보겠습니다.
C++ 프로그램에 필요한 라이브러리를 포함하는 방법을 배웠습니다.
- 입력 및 출력 작업을 위한
iostream sqrt()와 같은 수학 함수를 위한cmath
- 입력 및 출력 작업을 위한
숫자가 완전 제곱수인지 판별하기 위해 수학적 접근 방식을 사용하는
isPerfectSquare()함수를 구현했습니다.- 숫자의 제곱근을 계산합니다.
- 제곱근의 정수 부분을 제곱한 값이 원래 숫자와 같은지 확인합니다.
main()함수에서 다음과 같은 사용자 친화적인 인터페이스를 만들었습니다.- 사용자에게 숫자를 입력하라는 메시지를 표시합니다.
isPerfectSquare()함수를 사용하여 숫자가 완전 제곱수인지 확인합니다.- 결과에 따라 적절한 메시지를 표시합니다.
프로그램의 기능을 확인하기 위해 다양한 입력으로 프로그램을 컴파일하고 테스트했습니다.
이 랩을 통해 다음과 같은 몇 가지 중요한 C++ 프로그래밍 개념에 대한 실질적인 경험을 얻었습니다.
- 함수 생성 및 호출
- 조건문 (if-else) 사용
- 사용자 입력 및 출력 작업
- 형식 변환 수행
- 표준 라이브러리의 수학 함수 사용
- C++ 프로그램 컴파일 및 실행
다음과 같은 기능을 추가하여 이 프로그램을 더욱 향상시킬 수 있습니다.
- 사용자가 양의 정수를 입력하도록 보장하기 위한 입력 유효성 검사
- 프로그램을 다시 시작하지 않고 여러 숫자를 확인할 수 있는 기능
- 완전 제곱수가 아닌 숫자에 가장 가까운 완전 제곱수 찾기
이러한 기본적인 개념을 계속 연습하고 구축함으로써 더 복잡한 문제에 적용할 수 있는 더 강력한 C++ 프로그래밍 기술을 개발할 수 있습니다.



