보관함

JUNGOL 기초다지기 04 디버깅

niamdank 2019. 11. 17. 21:02

프로그래밍에서 가장 기초적인 내용을 다루는 기초 다지기입니다.

이번 포스팅은 기초 다지기 중 네 번째인 디버깅 문제를 풀어보도록 하겠습니다.

 

기초 내용인 만큼 다른 설명없이 문제와 코드만 간단하게 작성하도록 하겠습니다.


526 : 디버깅 - 자가진단1

#include <iostream>

using namespace std;

int main(void)
{
	double var1, var2;

	// 두개의 값 입력받기
	cin >> var1 >> var2;

	// 곱한 뒤 정수로 변환
	int productFirst = static_cast<int>(var1 * var2);
	// 정수로 변환 후 곱
	int castFirst = static_cast<int>(var1) * static_cast<int>(var2);

	// 결과 출력
	cout << productFirst << ' ' << castFirst << endl;
}

 

527 : 디버깅 - 자가진단2

#include <iostream>

using namespace std;

int main(void)
{
	int var1, var2;

	cin >> var1 >> var2;

	// 정수 나누기
	int divid = var1 / var2;
	// 실수 나누기
	float dividCast = static_cast<float>(var1) / var2;

	// 소수점 이하 2자리 적용
	cout.setf(ios::fixed);
	cout.precision(2);

	cout << divid << ' ' << dividCast << endl;
}

 

116 : 디버깅 - 형성평가1

 

이 문제에는 따로 주석을 적으라는 내용은 없으나 기본적으로 디버깅에 속해있으므로 주석을 넣었습니다.

#include <iostream>

using namespace std;

int main(void)
{
	int var1, var2, var3;

	cin >> var1 >> var2 >> var3;

	int sum = var1 + var2 + var3;
    	// 소수점 표시를 위해 실수로 변환
	float avg = static_cast<float>(sum) / 3;

	// 소수점 이하 1자리 출력
	cout.setf(ios::fixed);
	cout.precision(1);

	cout << avg << endl;
}

 

117 : 디버깅 - 형성평가2

#include <iostream>

using namespace std;

int main(void)
{
	float var1, var2, var3;

	cin >> var1 >> var2 >> var3;

	// 정수부분의 합
	int sum = static_cast<int>(var1) + static_cast<int>(var2) + static_cast<int>(var3);
	// 실수의 평균을 구한 뒤 정수로
	int avg = static_cast<int>((var1 + var2 + var3) / 3);

	cout << "sum " << sum << endl;
	cout << "avg " << avg << endl;
}

 

118 : 디버깅 - 형성평가3

 

이 문제는 해당 위치에 브레이크 포인트를 걸고 디버깅을 통해 실행하여 브레이킹 포인트에서 a의 값을 확인하라는 의도를 가진 문제입니다.

 

위와 같이 진행해 값을 확인하면 a의 값이 15인 것을 알 수 있습니다.

#include <iostream>

using namespace std;

int main(void)
{
	int a = 5;
	a += 10;
	a = a - 1;
	cout << 15 << endl;
}

 

119 : 디버깅 - 형성평가4

 

이 문제도 마찬가지로 디버깅을 통해 해당 위치의 값을 알아내는 문제입니다.

 

다만 C 스타일의 문제를 C++ 스타일로 변환시키고 에러가 뜨는 것을 제거하기 위해 define문을 추가한 점을 주목하시면 될 것 같습니다.

#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <ctime>

using namespace std;

int main(void)
{
	int a = 0;
	time_t now;
	tm tt;
	time(&now);
	tt = *localtime(&now);
	a = tt.tm_year; // a = 0
	a += tt.tm_mon; // a = 119
	a += tt.tm_mday;
	cout << 0 << ' ' << 119 << ' ' << 146 << endl; // a = 146
}