1. 목적
  - 사칙 연산에 관해 이해한다.

2. 문제
  - 날짜, 시간, 분, 초를 입력받아 전체 초를 계산하는 프로그램을 작성한다.
  - 해당 단위 보다 큰 숫자를 받았을때 오류를 내고 다시 시작한다.
  - 실행화면

=========================================================
일, 시간, 분, 초를 각각 순서대로 입력하세요 :3 4 62 67
잘못된 값을 입력하셨습니다. 다시 입력하세요.
=========================================================
일, 시간, 분, 초를 각각 순서대로 입력하세요 :3 4 50 28
3일 4시간 50분 28초는 276628초 입니다.
=========================================================
Press any key to continue

3. 이해
  - 조건을 적용하여 반복 수행할수 있는가?
  - 계산하여 출력할수 있는가?

4. 코드

#include <stdio.h>

int main()
{
 int day, hour, min, sec;

start:

 printf("=========================================================\n");
 printf("일, 시간, 분, 초를 각각 순서대로 입력하세요 : ");
 scanf("%d %d %d %d", &day, &hour, &min, &sec);
 if(day > 365 || hour > 25 || hour > 24 || min > 60 || sec > 60)
 {
  printf("잘못된 값을 입력하셨습니다. 다시 입력하세요.\n");
  goto start;
 }

 printf("%d일 %d시간 %d분 %d초는 %d초 입니다.\n", day, hour, min, sec, (day * 24 * 3600) + hour * 3600 + min * 60 + sec);
 printf("=========================================================\n");

 return 0;
}

5. 해설
  - 특별한 조건이 없으므로 잘 쓰지 않는 goto 문을 써서 반복 수행 하였습니다.
  - 다음 단위로 넘어갈수 있는 숫자를 수행했을때 다시 수행하라는 문장과 함께 start 레이블로
    이동합니다.
  - 날짜과 시간, 분에 따른 초계산을 하여 기존 초와 더하여 결과 값을 나타냅니다.
  - goto 문은 조건없는 제어문이므로 문제가 생길수 있으므로 잘 쓰지 않습니다.

6. 참고
  - http://www.winapi.co.kr/clec/cpp1/4-5-1.htm : goto 문 설명

Posted by 카켈