• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

따닥따닥 붙어있는것 입력(교안, 23page)

22.09.07 08:03 작성 조회수 106

0

입력을

4 4

1000

0000

0111

0000

로 하면,

 

cin >> n >> m;

for(int i = 0; i <n ; i++){

cin >> s;

}

 

로 알려주셨는데.. 이게 어떻게 저걸 받아들이는건가요?

앞에

int n,m;

string s;

가 있다고 해도 너무 이상해서요..

 

그리고 뒤에 scanf로 받는거랑 둘중 뭐가 더 좋다 안좋다는 없을까요? (그전에는 뭐가 이왕이면 더 좋다는식으로 써주셧길래 문의드려요)

답변 2

·

답변을 작성해보세요.

0

정말 감사합니다! :)

 

'0' 을 배는 이유는 아스키코드표의 0이 0x80 이니 그만큼을 빼서 진짜 숫자 0으로 만들어 주시는거군요

 

취미쟁이에게 너무 좋은 강의입니다 감사합니다!

맞습니다. ㅎㅎ

문자에서 숫자 형변환은 항상 아스키코드를 유념해두어야 해요.

감사합니다.

0

안녕하세요. ㅎㅎ

1111 등을 하나의 문자열로 받아서

for char : s

이런식으로 문자열을 문자로 분해해서 처리한다는 의미입니다.

 

교안에 해당 부분을 추가 및 수정했는데요. 다음과 같습니다.

cin으로 받을 때는 개행문자(띄어쓰기, 한줄띄기)까지 받을 수 있다라는 것을 기억해주세요. 

#include<bits/stdc++.h>
using namespace std; 
int n, m, a[10][10];
string s; 
int main(){
	cin >> n >> m; 
	for(int i = 0; i < n; i++){
		cin >> s;
		for(int j = 0; j < m; j++){
			a[i][j] = s[j] - '0';
		} 
	}
	for(int i = 0; i < n; i++){ 
		for(int j = 0; j < m; j++){
			cout << a[i][j]; 
		} 
		cout << '\n';
	}
}
/*
4 4 
1000
0000
0111
0000
1000
0000
0111
0000

*/ 

위의 코드처럼 문자열 s를 받아 문자열을 문자로 분해(s[j]) 해서 형변환 s[j] - ‘0’을 통해 숫자를 int형 배열인 a[i][j] 배열에 넣는 것을 볼 수 있습니다.

음.. 좋다 안좋다는 없습니다. 여러가지 해보시고 본인이 편한 방식으로 하시면 됩니다.

  • 저는 개인적으로 cin이 편해요.

감사합니다.