본문 바로가기

개발자/C

C언어 초침과 분침이 직각을 이룰때 시각 구하기

반응형

문제



요구분석

시침과 분침이 직각을 이루는 때의 시각을 구한다.

분은 소수 둘째 자리에서 반올림하여 나타낸다.

3. 시침과 분침이 90, 270도를 이루고 있을때를 나타냄

 

해결방법

1. 이중 for문을 이용하여 분이 변할때마다 시침과 분침의 각을 공식을 통해 계산해 90도 혹은 270도일 경우 출력하는 방법

2. 0~11시까지 반복하여 직각을 찾는 방법

3. 삼각함수를 이용

배경지식

시침의 분당 변화하는 각도 => 1분당 0.5

분침의 분당 변화하는 각도 => 1분당 6

시침과 분침 각도 구하는 공식 : 시간*30+0.5*-6*

알고리즘

1. 각 변수들을 선언한다.

2. for문을 통해 시간값이 12가 될동안 반복하여 수행한다.

3. 예외인 경우인 시간이 3인경우와 9인 경우 3시정각,9시정각을 출력해준다.

4. 반복문을 통해 분침이 59.9초까지 반복시킨다.

5. 시침과 분침이 이루는 각을 공식을 통해 구한뒤 각이 90도이거나 270도인 경우 시간과 분을 출력하고 분에 32를 더해준다.//다음 90도까지 32정도의 차이가 있어 메모리 낭비를 줄임

7. 조건에 부합하지 않을 경우 계속 반복한다.

 

소스코드

#include <stdio.h>

#include <math.h>

void main(){


int i;

float angle,j=0;

for(i=0;i<12;i++){

printf("%d ~ %d 시사이 직각을 이루는 시간\n",i,i+1);

if(i==3)

printf("3시 0분\n");

if(i==9)

printf("9시 0분\n");

for(j=1;j<59.9;){

angle=abs(i*30+0.5*j-6*j);

j=j+0.1;

if(angle==90.00 || angle==270){

printf("%d시 %.2f분\n",i,j-0.1);

j=j+32;

}

else

continue;

}

}

}

실행결과


고찰

다양한 문제를 많이 풀어서 코딩실력을 향상해야 겠다는 생각이 드는 과제였던 것 같다.

이중 for문을 사용하여 상당히 많은 메모리 소요가 있었고, 다른 방법을 통해 메모리를 최소화 시키도록 노력해야 겠다.

반응형

'개발자 > C' 카테고리의 다른 글

C언어 숫자 5개 입력받아 세자리수 만들기  (0) 2015.09.29
C언어 대시 수 세기  (0) 2015.09.29
C언어 소수놀이, 소수구하기  (0) 2015.09.29
C언어 나무심기  (1) 2015.09.29
C언어 공약수, 최대공약수 출력  (0) 2015.09.29