[백준][10951] 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;
}
