컴퓨터/Projects
#include<stdio.h>
#include<time.h>
#include<Windows.h>
#include<conio.h>
int main() {
while (1) {
//메뉴 입력
system("cls");
printf("\t=== Test Program ==\n\n");
int input;
printf("1.스톱워치\t2.타이머\t3.종료\n\n");
printf("원하는 메뉴를 입력 하세요 : ");
scanf_s("%d", &input);
//메뉴에 따른 제어
if (input > 0 && input < 4) {
if (input == 3) {
printf("프로그램을 종료 합니다.");
break;
}
switch (input)
{
case 1:
/*
* 아래 기능을 포함하여 구현 예정
* 시작 | 기록 | 정지 | 초기화
*/
printf("아무키나 누르면 시작 합니다.");
system("pause");
clock_t start_time = clock();
while (1) {
clock_t curr_time = clock() - start_time;
//UI개선 하기
double time_double = (double)curr_time / 1000;
//printf("%.3lf\n", time_double);
int trans;
int undersec;
int sec;
int min;
int hour;
trans = (int)time_double;
undersec = curr_time%1000;
sec = trans % 60;
min = trans /60%60;
hour = trans /60/60;
printf("\n\n\t%d:%d:%d.%d\n\n", hour,min,sec, undersec);
//키 입력을 받았을때 멈추기(일시정지)
if (_kbhit()) {
printf("1.재시작\t2.초기화\t3.종료\n");
printf("원하는 기능을 선택 하세요 : ");
scanf_s("%d", &input);
//1. 재시작 선택시 스톱워치가 이어서 진행
if (input == 1) {
start_time = clock() - curr_time;
continue;
}
//2. 초기화 선택시 스톱워치가 초기화 후 진행
if (input == 2) {
start_time = clock();
continue;
}
else {
break;
}
}
system("cls");
}
system("pause");
break;
case 2:
/*
* 시간 / 분 / 초를 이용한 타이머 카운팅 시작하게 구현 예정
* 최대 100시간 ?
* 입력을 통해 카운팅 시간 설정
* 시작 | 정지 | 초기화
*/
//printf("2번\n");
//타이머 설정 입력
int set_total = 0;;
printf("시간을 입력해 주세요 : ");
scanf_s("%d", &input);
set_total = input * 60 * 60;
printf("분을 입력해 주세요 : ");
scanf_s("%d", &input);
set_total += input * 60;
printf("초를 입력해 주세요 : ");
scanf_s("%d", &input);
set_total += input;
printf("%d\n", set_total);
printf("아무키나 누르면 타이머가 실행됩니다.\n");
printf("설정 시간 %d:%d:%d\n", set_total/60/60, set_total/60%60, set_total%60);
system("pause");
// 시간 카운팅 시작 값
clock_t start_time2 = clock();
while (1) {
system("cls");
// 0초로 맞춤
clock_t curr_time = clock() - start_time2;
double time_double = (double)curr_time / 1000;
int curr_sec = (int)time_double;
int target = set_total - curr_sec;
printf("\n\n\t%d:%d:%d\n\n", target / 60 / 60, target / 60 % 60, target % 60);
if (target == 0) {
printf("설정하신 시간이 모두 소모되었습니다.\n");
system("pause");
break;
}
}
}
}
//예외 처리
else {
while (getchar() != '\n') {}
printf("잘못된 입력입니다.");
system("pause");
}
}
return 0;
}
/*
* 시간 / 분 / 초를 이용한 타이머 카운팅 시작하게 구현 예정
* 최대 100시간 ?
* 입력을 통해 카운팅 시간 설정
* 시작 | 정지 | 초기화
*/
//printf("2번\n");
//타이머 설정 입력
int set_total = 0;;
printf("시간을 입력해 주세요 : ");
scanf_s("%d", &input);
set_total = input * 60 * 60;
printf("분을 입력해 주세요 : ");
scanf_s("%d", &input);
set_total += input * 60;
printf("초를 입력해 주세요 : ");
scanf_s("%d", &input);
set_total += input;
printf("%d\n", set_total);
printf("아무키나 누르면 타이머가 실행됩니다.\n");
printf("설정 시간 %d:%d:%d\n", set_total/60/60, set_total/60%60, set_total%60);
system("pause");
// 시간 카운팅 시작 값
clock_t start_time2 = clock();
while (1) {
system("cls");
// 0초로 맞춤과 설정 시간 - 소모시간 출력
clock_t curr_time = clock() - start_time2;
double time_double = (double)curr_time / 1000;
int curr_sec = (int)time_double;
int target = set_total - curr_sec;
printf("\n\n\t%d:%d:%d\n\n", target / 60 / 60, target / 60 % 60, target % 60);
//시간 소모시 탈출
if (target == 0) {
printf("설정하신 시간이 모두 소모되었습니다.\n");
system("pause");
break;
}
}
//타이머 설정 입력
int set_total = 0;;
printf("시간을 입력해 주세요 : ");
scanf_s("%d", &input);
set_total = input * 60 * 60;
printf("분을 입력해 주세요 : ");
scanf_s("%d", &input);
set_total += input * 60;
printf("초를 입력해 주세요 : ");
scanf_s("%d", &input);
set_total += input;
printf("%d\n", set_total);
printf("아무키나 누르면 타이머가 실행됩니다.\n");
printf("설정 시간 %d:%d:%d\n", set_total/60/60, set_total/60%60, set_total%60);
system("pause");
// 시간 카운팅 시작 값
clock_t start_time2 = clock();
while (1) {
system("cls");
// 0초로 맞춤과 설정 시간 - 소모시간 출력
clock_t curr_time = clock() - start_time2;
double time_double = (double)curr_time / 1000;
int curr_sec = (int)time_double;
int target = set_total - curr_sec;
printf("\n\n\t%d:%d:%d\n\n", target / 60 / 60, target / 60 % 60, target % 60);
//시간 소모시 탈출
if (target == 0) {
printf("설정하신 시간이 모두 소모되었습니다.\n");
system("pause");
break;
}
}
처음에 타이머를 초로 환산하지 않고 시/분/초의 상태의 변수를 만들어 구현하려 했으나... 잘 안되고 효율적이지 않아서 애먹었다.. 생각 끝에 결과물을 가지고 오니 훨씬 간단하게 해결되었다.
시간이 된다면...
2021.12.15 - [컴퓨터/Projects] - C언어로 스톱워치/타이머 만들기5 - 기본 구현하기4(타이머기능 개선)
C언어로 스톱워치/타이머 만들기5 - 구조 다듬기(함수화) (0) | 2021.12.31 |
---|---|
C언어로 스톱워치/타이머 만들기5 - 기본 구현하기4(타이머기능 개선) (0) | 2021.12.15 |
C언어로 스톱워치/타이머 만들기3 - 기본구현하기2(일시정지/재시작 초기화/디자인) (0) | 2021.12.11 |
C언어로 스톱워치/타이머 만들기2 - 기본 구현하기 (0) | 2021.12.06 |
C언어로 스톱워치/타이머 만들기1 - 시작 (0) | 2021.12.03 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet