[백준][10951] A+B - 4 (입력 종료 조건이 없을 때)



[1463] A+B - 4

문제


두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.


입력


입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)


출력


각 테스트 케이스마다 A+B를 출력한다.


입력 1

1 1
2 3
3 4
9 8
5 2

출력 1

2
5
7
17
7

1. 문제 설명


  • 문제는 정말 간단하나 출력 초과 라는 에러메세지가 떴다. 이게 무슨 메세지일까 검색을 해봤다.

“프로그램이 무한 루프에 빠졌을 때”

  • 아니.. 그러라고 만든 문제 아닌가? 라고 생각했는데, 내가 EOF에 대한 개념이 없었던 거였다 나의 무지함..
  • 이 경우에 EOF를 입력 받을때 프로그램을 종료 시켜야하기 때문에 해당 조건을 넣어줘야한다.

1-1. 잘못된 코드

//10951
#include <iostream>
 
using namespace std;
 
int main() {
    int a, b;
 
    while (true) {
        cin >> a >> b
 
        cout << a + b << endl;
    }
 
    return 0;
}
  • 이 경우 프로그램이 종료되지 못하고 계속 무한루프를 돌기 때문에 출력 초과 라는 에러가 뜬다. 그래서 EOF를 입력 받을때 프로그램을 종료 시키기 위해 while 조건문 안에서 입력을 제대로 받았는지 처리해줘야한다.

1-2. 해결 방법

C

while (scanf("%d %d",&a,&b) != EOF) { }

C++

while (cin >> a >> b) { }

2. 소스 코드


//10951
#include <iostream>
 
using namespace std;
 
int main() {
    int a, b;
 
    while (cin >> a >> b) {
 
        cout << a + b << endl;
    }
 
    return 0;
}



© 2019. by mintheon

Powered by mintheon