choyj1127   2년 전

중간중간 풀이되는 과정을 확인하려고 printf로 확인도 했었는데 문제점이 있었습니다

1. 소수들의 배열 deciArr에 계속 0의 값이 들어값니다.  그로인해 min이 계속 0으로 계산됩니다.

2. 자연수의 배열에 1이 들어갔을 때, 이를 소수라고 간주해버립니다.

함수 isDecimal에서 전달된 값 num이 1이면 잘못된 횟수를 늘림으로써 false를 반환하도록 해놨는데 왜 계속 1을 소수로 받아드릴까요

조언 부탁드립니다 !

mythofys   2년 전

일단 위 소스에는 현재 3가지 문제가 있습니다.

1.

0과 1의 경우 함수 isDemical에 입력된 후 실행되면 for문은 num이 2보다 클 때부터 실행되기 때문에 for문 내의 num이 1이면 wrong=1을 수행하는 지시문은 아예 지나지도 않고 바로 1을 반환해 버립니다. for문 밖에 0과 1을 예외 처리하는 if문을 하나 만들어 주어야 합니다.

2.

현재 최솟값으로 사용 중이신 min은 <algorithm> 헤더파일의 함수 이름이므로 바꿔주어야 합니다.

3.

최대 m과 n값이 10000인데 실행 중 9999번까지의 배열을 사용합니다. 이때 소수의 개수를 찾는 함수 min_amongDecimal을 호출하면 10000번째 배열이 호출되어 할당한 배열보다 더 큰 범위를 불러오게 되어 오류가 발생합니다.

위 세가지 문제를 모두 고치시면 ac를 받을 수 있습니다.

화이팅!

choyj1127   2년 전

1번 조언 감사해요   !

2번 조언에서 algorithm헤더파일은 처음 봤는데 약간 검색해보니까 max(x,y)나 min(x,y)만 대상으로 하는 것 같은데 기본 변수로만 설정하는게 왜 안되는지 모르겠네요..

3번 조언에서 함수 min_amongDecimal을 호출하면 10000번째 배열이 호출된다는 점은 처음 들은 것 같아요. 아직 배우지 않은걸까요

C 공부한지 3달됐는데 갈 길이 멀다는 걸 느끼고 갑니다..

mythofys   2년 전

아 search_arrDemical이네요;; 죄송해요.

3번은 last-first+1이 최악의 경우 10000이 될 수 있어요 이 경우에 numArr[10000]이 호출된다는 의밉니다!

2번에선 헤더파일을 호출안해도 채점환경이나 프로그램에 따라 호출되거나 혼용될 수 있어서 사용 불가한걸로 알아요.

한지 3달밖에 안돼셨는데 이정도면 저보다 훨씬 빠르시네요;;  화이팅!!!

댓글을 작성하려면 로그인해야 합니다.