인프런 커뮤니티 질문&답변

라임맛커피님의 프로필 이미지
라임맛커피

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

교안 21쪽의 예제 질문 있습니다.

작성

·

119

0

 
 
안녕하세요 큰돌님
 
 
교안 21쪽에 scanf로 받기 에서 예제로 나온 문제에서
 
 
 
cin >> n >> m; 이부분에 대한 변수 선언이 없는것 같은데 예제가 맞는건가요?
 
 
 
#include<bits/stdc++.h>

using namespace std;

int a[10][10];

int main() {
	
	cin >> n >> m;
	for(int i=0; i<n; i++) {
		for(int j = 0; j < m; j++) {
			scanf("%1d", &a[i][j]);
		}
	}
	
	return 0;
}

 

그리고 밑에 eof 이용한 예제인

 

while (scanf("%d", &n) != EOF)

while (cin >> n)

 

이거랑

 

while(!cin.eof()) {

cin >> n;

}

 

이거랑 비슷한 방법인가요?

밑에 코드는 입력이 되는데 엔터 후에도 계속되더가 ctrl+z 누르면 종료가 되는데

 

교재에 나와 있는 코드는 그냥 엔터 누르면 멈춰 버리는 것 같아서 여쭤봅니다. 

 

 

 

 

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요. wnstn2844님. 

 

1. n, m은 변수를 추가해서 교안을 다시 올렸습니다. 변수가 추가가 안되어 있네요 ㄷㄷ

 

2. 음.. 그게 아니구요. 

 

scanf와 cin은 다르게 해야 합니다. 

 

while (scanf("%d", &n) != EOF) 

while (cin >> n) // cin으로는 이렇게 하면 됩니다

 

제가 cin에다가 eof를 기반으로 하라고 한 적도 없구요.

실행하기 좋게 예시를 들어 설명하자면 다음과 같습니다. 

1안) scanf로 할 때

#include <bits/stdc++.h>
using namespace std;
//1안
int n; 
int main(){
while (scanf("%d", &n) != EOF) {
cout << 1 << '\n';
}
}

2안) cin으로 할 때

#include <bits/stdc++.h>
using namespace std;

//2안
int n; 
int main(){
while (cin >> n) {
cout << 1 << '\n';
}
}

 

감사합니다. 

강사 큰돌 올림.

 

 

라임맛커피님의 프로필 이미지
라임맛커피

작성한 질문수

질문하기