(c언어) 제가 짠 코딩을 간략하게 줄일 방법이 있을까요?
조회수 463회
코딩은 성공해서 잘 작동은 되는데.. 뭔가.. 제가 너무 길게 코딩한게 아닌가해서요. 코딩이 길어진게 두 개입력 값 중 작은 수, 큰 수를 구분해서 그런데, 뭔가 간단한 방법이 있을까해서요. 지도편달 부탁드립니다.
제가 구현하려는 목표
두개의 정수를 입력받아서, 작은 수부터 큰 수까지, 3의 배수이거나 5의 배수인 수들의 합(sum)과 평균(avg)을 출력
구현결과-
입력 - 10 15
출력-
sum = 37
avg = 12.3
제가 짠 코딩
int b,c;
int sum = 0, cnt = 0;
double avg;
scanf_s("%d %d", &b, &c);
if(b<c){
for (b; b <= c; b++) {
if (b % 3 == 0 || b % 5 == 0) {
sum += b;
cnt++;
}
}
}
else if (b > c) {
for (c; c <= b; c++) {
if (c % 3 == 0 || c % 5 == 0) {
sum += c;
cnt++;
}
}
}
avg = (double)sum / cnt;
printf("sum = %d\n", sum);
printf("avg = %.1f\n", avg);
1 답변
-
b
와c
의 값을 비교해서 작은수를start
큰수를end
에 넣으면 어떨까요?if
,else if
에 따라 다른 루프를 돌지 않고start
,end
값이 다르게 할당되어 루프에 대한 코드는 하나만 생기게 됩니다.추가) 물론 코드가 길어지더라도 3의 배수, 5의 배수, 15의 배수를 각각 구한 다음
3의 배수 + 5의 배수 - 15의 배수
를 해주는 것이 더 좋을 것 같습니다.%
연산은 시간이 많이 걸리기 때문입니다. (n의 배수를 구하는 방법은start
와 같거나 큰 수중 가장 작은 n의 배수를%
연산으로 구한 다음, 그 수에서 n씩 더해주면 됩니다.)
댓글 입력