ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JUNGOL 기초다지기 04 디버깅
    보관함 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
    }

    댓글

Designed by Tistory.