hyunjin

[C++]기초 입출력 1012~1025 , iomanip , getline(),간단 scanf 본문

알고리즘 연습/코드업

[C++]기초 입출력 1012~1025 , iomanip , getline(),간단 scanf

_h.j 2020. 9. 1. 10:20
728x90

[1012]

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

int main(void){
	float number;
	cin>>number;	
	cout<<fixed<<setprecision(6)<<number<<"\n";
	return 0;	
}

cout의 기본 정밀도는 6이라고 한다.

 

이 문제에서 제시된 예시는 7자리 수 이므로 출력 자릿수 조정이 필요.

iomanip 헤더의 setprecision 기능 사용

 

fixed 와 setprecision 을 같이 : 소수점 n 자리수 출력

fixed 가 없다면 : 정수와 소수 부분 합쳐서 n 자리수 출력

 

 

[1015] 1012와 같은 맥락

#include <bits/stdc++.h>
#include <iomanip>
using namespace std;
int main(){
    float num;
    cin>> num;
    cout<<fixed<<setprecision(2)<<num;
    
    return 0;
}

 

[1020] 

#include <bits/stdc++.h>
#include <iomanip>
using namespace std;
int main(){
    int f,r;
    scanf("%d-%d",&f,&r);
    printf("%06d%06d",f,r);
    return 0;
}

입력은 '-'로 구분하여 입력받는다.

자릿수를 고정하는 정수형을 사용하여 출력한다.

이것을 사용하지 않으면 000112는 112로 출력된다.

 

 

[1022]

#include <bits/stdc++.h>
using namespace std;
int main(){
	string ans;
	getline(cin,ans);
	cout<<ans;
	return 0;
}

hello world 처럼 중간에 띄어쓰기가 들어간 경우 입력받기 위해서

getline을 사용했다.

 

1. std::getline()

- <string>에 정의되어 있음

- getline() 의 사용법

   첫 번째 인자 : 파일입력인지 표준 입역인지

   두 번째 인자 : 문자열을 저장할 string 변수명

   세 번째 인자 : 입력받은 문자들 중 어느 문자 전까지 저장할 것인지. ex ) 'z'

                      default는 "\n"

 

2. std::cin.getline()

- <iostream>에 정의된 cin의 멤버 함수

- cin.getline() 의 사용법

   첫 번째 인자 : 문자열 저장할 char 배열명

   두 번째 인자 : 저장할 문자 최대 개수

char str[50];
cin.getline(str,10);
cout<<str<<endl;

 

3. fgets() 사용

- <stdio.h> 헤더파일

char s[2001];
fgets(s,2000,stdin);
printf("%s",s);

- 기본형 : char *fgets(char * buffer, int max,FILE * stream);

-첫 번째 인자 buffer : 저장할 버퍼(변수)

 두 번째 인자 max : 문자열을 구성하는 문자 최대 개수 - 1

 세 번째 인자 stream : 입력 파일 스트림 ex)stdin

 

getline 참고 바로가기

 

 

[1023]

실수 한 개를 입력받은 후 정수 부분, 실수 부분 따로 출력하기

(단, 입력값은 절댓값이 10000을 넘지 않으며, 소수점 이하 자릿수는 최대 6자리까지이고
0이 아닌 숫자로 시작한다.)

#include <bits/stdc++.h>

using namespace std;
int main(){
	int n,f;
	scanf("%d.%d",&n,&f);
	cout<<n<<"\n"<<f;
	return 0;
}

정말 간단하다. 입력이 x.xxx 이런식으로 '.'을 기준으로 int가 들어오니 

scanf를 이용하면 바로 풀린다.

어렵게 생각하지말고 쉽게 바로 풀렸으면 좋겠다.

 

 

[1025]

int main(){
	int n[5];
	scanf("%1d%1d%1d%1d%1d",&n[0],&n[1],&n[2],&n[3],&n[4]);
	return 0;
}

다섯 자리 정수를 입력 받는데 각 자리별로 나누어

70000

5000 ..

이런 식으로 출력하는 문제다. 

%1d 이렇게 간단하게 해결할 수 있다.

 

 

 

 

 

 

참고,출처

코드 업 소스 참고

코드 업 소스 참고2

 

 

 

 

 

 

728x90