2011-02-04 6 views

답변

3

%는 모듈로 (나머지) 연산자입니다. 귀하의 경우 다음을 시도하십시오.

int weeks = total_days/7; 
int remaining_days = total_days % 7;  
0

실제로 총 일수를 7로 나눌 수 있으며 주를 얻을 수 있습니다. 그 다음에는 총 일수 7을 기준으로 모듈로를 수행 할 수 있으며 남은 날이 남습니다. 충분하지 않습니까?

0

% (모듈러스 연산자)는 나머지를 제공합니다. 그래서 % 7 일은 주로 변환 한 후 남은 일수를 알려줍니다. 예를 들어 요일이 15 일이면 % 7 일이 1과 같습니다.

1

이상한 질문을하는 사람들이 "알아."라고 말하면 종종 틀립니다. 계수 (%)를 전혀 필요로하지 않습니다.

int weeks = total_days/7; 
printf("%d days is equal to %d weeks and %d days.\n", 
     total_days, weeks, total_days - weeks*7); 
+0

계수를 사용하는 것이 더 간단하고 빠르지 만. – Olhovsky

+0

@TheBigO, 아마도 더 간단하지만 모듈러 구현은 내부적으로 같은 수식을 사용하며, 컴파일러 최적화가 실제로 좋은 경우가 아니라면 7로 나누기를 반복 할 수 있습니다. –

+1

@ 칼 : 일부 CPU는 하나의 명령으로 몫과 나머지를 모두 찾을 수 있습니다. 그러나 여기서는 상수로 나누기 때문에 컴파일러 최적화가 좋은 것이라면 매직 넘버와 비트 시프트로 곱셈을 사용하여'weeks'를 계산할 것이고 정수 나누기가 필요 없을 것입니다. @TheBigO : 컴파일러는 'total_days % 7'을 동일한 코드로 최적화 할 수 있습니다. 모듈러스를 사용하지 않는 주된 목적은 질문에 대한 질문자에게 문제에 대해 생각하게하고, 모듈로 사용하는 것이 숙제가 필요한지 또는 간단히 "들었던 것이 무엇이 필요한지"를 알려주는 것입니다. –

관련 문제