코딩

개선된 계산기 프로그램 작성해보기

story98138 2026. 2. 24. 17:36

<Main.Cpp>

 

#include <iostream>
#include "Calculator.h"

using namespace std;

void main()
{
cout << "My Calculations" << endl;

float input1, input2;
while (true)
{
cout << "input the first value (0 to exit): ";
cin >> input1;
if (input1 == 0)
//사용자가 0을 입력하면 종료
{
break;
}
cout << "input the second value (0 to exit): ";
cin >> input2;
if (input2 == 0)
//사용자가 0을 입력하면 종료
{
break;
}
int a = input1;
int b = input2;
if (a == input1 && b == input2)
{
int result = Add(a, b);
cout << "integer addition: " << a << " + " << b << " = "
<< result
<< std::endl;
}
else
{
float result = Add(input1, input2);
cout << "float addition: "
<< input1 << " + " << input2 << " = "
<< result
<< std::endl;
}
}
std::cout << "Finished!";
}


<Calculator.h>

 

#pragma once

int Add(int a, int b);

float Add(float a, float b);


<Calculator.Cpp>

 

#include "Calculator.h"

int Add(int a, int b) 
{
    return a + b;
}

float Add(float a, float b) 
{
    return a + b;
}


<컴파일해보기>

잘 작동하는 것을 볼 수 있다.


1. 입력 및 종료 로직 (While Loop)

 

float input1, input2;

while (true)

{

  // ... 입력 받기 ...

   if (input1 == 0) break;

// ... 두 번째 입력 ... 

   if (input2 == 0) break;

 

- float 사용: 사용자가 3.14 같은 실수를 입력할 수도 있으므로, 처음부터 범용성이 넓은 float 타입으로 입력을 받습니다.

 

- break 조건: 사용자가 0 을 입력하면 while(true) 무한 루프를 탈출하여 프로그램이 종료되도록 설계했습니다.

 

 

2. 정수 vs 실수 판별 (형 변환 활용)

 

int a = intput1;

int b = intput2;

 

if (a == input1 && b == input2)

  {

      // 정수 계산 실행

  }

else

  {

      // 실수 계산 실행

  }

 

- 암시적 형 변환(casting):  float 값을 int 변수에 담으로 소수점 아래 자리가 버려집니다.

  (예: 3.14 -> 3

 

- 비교 연산: 만약 input1 이 원래 3.0 이었다면 a도 3이 되어 a == input1 은 참이 됩니다. 반면 3.14 였다면 3 == 3.14 는 거짓이 됩니다.

 

- 이를 통해 입력된 값이 "소수점이 없는 깔끔한 정수" 인지 "소수점이 포함된 실수" 인지 구분하여 출력 메세지를 다르게 보여줍니다.

 

 

'코딩' 카테고리의 다른 글

챕터 1-8 : 자료형(Data Type)  (0) 2026.02.24
챕터 1-7 : 리터럴  (0) 2026.02.24
챕터 1-6 : 서식지정자  (0) 2026.02.23
챕터 1-5 : main() 함수와 printf() 함수  (0) 2026.02.23
챕터 1-4 : 프로젝트와 소스코드 생성  (0) 2026.02.23