IT/프로젝트 및 실습 컴퓨터 프로그래밍 설계 과제#3_HW01 리드론 2017. 10. 20. 12:55 #include <stdio.h> #include <stdio.h> #include <stdlib.h> double getAngle(int hour, int min); void getStraightTime(int hour); int main(void){ int hour = 0, minute = 0; while(1){ printf("Enter two integer numbers (hour[0~11] & minute[0~59]): "); scanf("%d %d", &hour, &minute); fflush(stdin); //버퍼 비우기 if( hour==0 && minute==0){ break; } if( !((0<=hour) && (hour<=11)) ) { printf("** Invalid Input! Hour should be an integer. 0 to 11 \n"); continue; } if( !((0<=minute) && (minute<=59)) ) { printf("** Invalid Input! Minute should be an integer. 0 to 59 \n"); continue; } printf("1) Angle = "); printf("%+5.2lf˚", getAngle(hour,minute)); printf(" @ %02d:%02d \n", hour, minute); printf("2) Straight Line"); printf(" "); getStraightTime(hour); } printf("Exit the program.\n"); system("PAUSE > NUL"); //콘솔창이 바로 종료되는것을 방지되기 위한 } double getAngle(int hour, int min) { double angle=0.0; double angle_hour = 0.0; double angle_min = 0.0; //기준점 12와 이루는 각 angle_hour = 30.0*(double)hour + 0.5*(double)min; angle_min = 6.0*(double)min; //printf("\n"); //printf("시침이 이루는 각도 : %lf\n", angle_hour); //printf("분침이 이루는 각도 : %lf\n", angle_min); angle = angle_min - angle_hour; //분침이 앞선 경우 양수, 시침이 앞선 경우 음수 return angle; } void getStraightTime(int hour) { int min_i = 0; double min = 0.0; double second = 0.0; if(30.0*(double)hour + 180.0 >= 360.0) { min = (30.0*(double)hour - 180.0) / 5.5; } else { min = (30.0*(double)hour + 180.0) / 5.5; } min_i = (int)min; second = 60*(min - min_i); //출력을 함수 내부에서 함 if( hour!=5){ printf("@ %02d", hour); printf(":%02d", min_i); printf(":%05.2lf\n", second); } else{ printf("@ It doesn't exist.\n"); } }