c언어 논리오류 (factorial)

c언어 논리오류 (factoria)

논리오류란?

논리 오류는 프로그램을 작성하는 프로그래머가 코드를 작성하면서 실수를 하는 것입니다.

이 경우에는 프로그램 자체에 오류가 있지 않기 때문에 아무런 오류 메시지를 출력하지 않습니다.

ex) 실행은 되지만 자신이 의도한대로 실행되지 않는 프로그램이 있습니다.

위에서 간단하게 논리 오류를 설명한 이유는 지금부터 올릴 코드가 논리 오류를 가지고 있기 때문입니다.

-아래 링크는 해당 코드가 있는 깃허브의 주소입니다. [factorial]

https://github.com/ykarr/C.git

코드 및 풀이.

해당 문제는 factorial을 계산해서 결과를 출력하는 프로그램입니다.

아래 사진을 보면 문제점을 발견할 수 있을겁니다.

논리오류 문제

무엇이 문제인지 아셨나요?

5factorial이면 5*4*3*2*1=120인데 위의 사진에서는 24가 출력이 됩니다.

코드를 살펴보니 for문쪽이 문제입니다.

for(i=1; i<num; i++) 이렇게 조건이 되어있는데 i<num이라 5를 입력하면 4*3*2*1이 되어버립니다.

해결방법.

그럼 이 문제를 해결해보도록 하겠습니다.

방법은 간단합니다.

1. 첫번째 방법.

for문을 실행할때 num까지 실행이 가능하도록 i<=num을 해주는 겁니다.

이렇게 해주면 4*3*2*1로 되었던 코드가 5*4*3*2*1로 됩니다.

논리오류 해결방법1

2. 두번째 방법.

for문을 실행하기 전에 num을 하나 더해주는 겁니다.

이렇게 해주면 5를 입력했다고 가정했을 때 num을 한번 더해주니까 i<6이 되서 5*4*3*2*1가 되어 올바른 정답을 출력하게 됩니다. 

논리오류 해결방법2

Designed by JB FACTORY