목차
안녕하세요! 코딩하는 메추라기 케일입니다.
오늘은 제가 오랜만에 C++ 함수를 들고 왔습니다.
오늘의 함수들은 바로 시간 관련 함수들입니다.
오늘은 그 중 첫번째 시간으로 기다리기 함수를 소개해 드릴려고 해요
----필요한 헤더파일----
필요한 헤더파일입니다.
▶<Windows.h>
한개밖에 없지만 그래도 멋을 위해 해봤습니다. ㅋㅋ
<Windows.h>헤더파일에는 오늘 필요한 sleep()이란 함수가 포함되어 있습니다.
----필요한 함수----
필요한 함수입니다.
▶Sleep()
역시 한개밖에 없지만 그래도 멋을 위해 해봤습니다.
한글로 해석하면 자다 라는 뜻을 가지고 있는데요!
Sleep 함수는 괄호 안에 있는 숫자만큼 프로그램이 자게(그니까 기다리게) 해줘요.
Sleep()의 괄호안에 있는 숫자는 단위가 밀리초(ms <마이크로소프트 아님!>) 입니다.
그니까 Sleep(1000);이 1초동안 쉬게 하는 것입니다.
Sleep(1);이라고 하면 0.001초동안 쉬게 하는 것입니다.
그럼 이제 한번 Sleep 함수로 타이머를 만들어 보도록 하겠습니다.
----타이머 만들기----
대충 타이머를 구현을 하면
사용자가 타이머 초로 맞출 수를 입력하면 그 수만큼 시간이 흘러가고 시간이 다 지나면 시간이 끝났다고 출력이 되면 되겠죠?
그럼 구현을 한번 해 보겠습니다.
일단 필요한 변수
double current_second = 0;
int input_second = 0;
으로 필요한 변수들을 선언해 줍시다.
current_second는 말 그대로 실시간으로 타이머를 시작시킨 후 지나간 시간을 담는 변수입니다.
current_second가 시간이 지나 input_second가 될 때 타이머가 정지되면서 사용자에게 알려줍니다.
그러면 이제 입력을 받도록 하겠습니다.
cin>>input_second;
이렇게 해주십니다.
이제 타이머로 맞출 초를 입력했습니다.
그 다음에는 입력한 수에 다다를때까지 기다려야겠죠.
저는 그냥 기다리면 심심하니까 0.1초마다 몇 초가 남았는지 출력이 되게 만들었습니다.
current_second가 input_second가 될때까지 기다린 후 input_second가 된다면 "끄읕!" 이라고 치게 할 거니까
current_second가 0.1초마다 0.1씩 증가해서 input_second가 되면 반복문이 끝나게 해 보았습니다.
for (current_second; current_second < input_second; current_second+=0.1) {
cout << input_second - current_second << "초 남음\n";
Sleep(100);
}
이렇게 하면 current_second가 0 에서 0.1씩 올라갑니다.
반복문이 한번 실행되면
input_second - current_second + "초 남음" 이 출력되고
0.1이 기다려집니다.
이게 input_second가 되면 멈추고 "끄읕!"이 출력되니
for (current_second; current_second < input_second; current_second+=0.1) {
cout << input_second - current_second << "초 남음\n";
Sleep(100);
}
cout << "끄읕!";
이렇게 되면 맨 마지막에 "끄읕!" 이라고 출력되는 걸 보실 수 있습니다.
<Windows.h> 헤더파일이 온라인으로 c++ 코드를 컴파일(실행)시켜주는 웹사이트에 없더라고요.
그래서 저는 visual studio 2019에서 실행을 시켜보았습니다.(사실 visual studio 2019가 있었는데 제 컴이 안 좋아서 visual studio에서 하면 렉이 많이 걸리드라고요. 그래서 웹사이트로 c++을 컴파일(실행)시켜주는 곳에서 실행을 해 보았는데 거기에 <Windows.h>헤더파일이 없어서 그냥 visual studio 2019로 하기로 했습니다.)
전체 코드입니다.
이제 한번 실행시켜 보도록 하겠습니다.
생각했던 대로 "수를 입력해 주세요: " 라는 화면이 맨 처음에 뜨는 걸 보실 수 있습니다.
저는 한번 10초를 입력해 볼게요.
이렇게 잘 되다가
이렇게 맨 마지막에 "끄읕!" 이란 것 까지 나오는 걸 보실 수 있습니다.
근데 1.95299e-14초 남음 이 약간 거슬리시다면
반복을 한 번 덜 해주시면 되시겠죠?
#include <iostream>
#include <Windows.h>
using namespace std;
int main() {
int input_second = 0;
double current_second = 0;
cout << "수를 입력해 주세요: ";
cin >> input_second;
for (current_second; current_second < input_second - 0.1; current_second+=0.1) {
cout << input_second - current_second << "초 남음\n";
Sleep(100);
}
Sleep(100);
cout << "끄읕!";
return 0;
}
위의 코드처럼 for 반복문을 한번 덜 반복하게 만들어 주시면 됩니다.
오늘은 여기까지 입니다!
다음에는 C++에서 현재 시간을 받아 올 수 있는 방법에 대해 알려드리겠습니다.
'코딩 > C++ 함수모음' 카테고리의 다른 글
C++ 타이머 2 (시간 받아오기) (0) | 2021.09.13 |
---|---|
C++ 절댓값, 제곱, 제곱근, 세제곱근 함수 (0) | 2021.07.02 |
C++ 소숫점 n번째 자리까지 반올림, 올림, 내림하기 (0) | 2021.06.25 |
C++ 랜덤함수 쓰기, 랜덤함수 범위 정하기 (0) | 2021.06.24 |