ab0061   2년 전

혹시 반례를 찾아주실 수 있나요? 

질문게시판에 답변 달린 반례들은 제 거에서 다 정상적으로 작동하는데 뭐 때문에 틀렸다고 하는지 모르겠습니다.

% 뜨기 전에 틀렸다고 출력됩니다.

andrew2005   2년 전

프로그램을 실행시키고 문제에서 주어진 예제입력1을 입력할 때 

619

60

이 나오는 것 같습니다

ab0061   2년 전

60 100 입력하면 

620

61

저는 제대로 나오는데 뭔가 이상하네요 

lego0901   2년 전

안녕하세요.

C(C++) 언어에서 지역변수를 사용할 때는 값을 제대로 초기화시켜주는 것이 중요합니다.

코드 4번째 줄의

int a, b, c, m, n, m1, n1= 0;

에서, 특히 변수 b의 값이 BOJ 채점 환경에서 작성자님과 다른 값으로 초기화가 되어 발생한 오류입니다.

이는 컴퓨터 환경이나 혹은 런타임마다 매번 달라집니다. 따라서 구체적인 초기값을 지정해주어야 합니다.



제 생각에는 아래와 같이 4번째 줄을 고치시고, 나머지 부분을 알맞게 수정하시는 것이 의미적으로 올바른 코드가 될 것 같습니다.

int a, b = 0, c, m, n, m1, n1 = 0; // b: 찾은 소수의 합. 초기값은 0


감사합니다.


ab0061   2년 전

@lego0901 

와 답변 정말 감사합니다. 

한 번에 해결됐습니다.

int a, b, c, m, n, m1, n1= 0;


이렇게 적을 경우엔 n1만 0으로 저장되어 코드가 제대로 안 돌아간 것 일까요?


정말 감사합니다.

lego0901   2년 전

네, 정확합니다.

n1만 제대로 초기화가 된 상태고, 나머지는 아니었습니다.

미약하게나마 도움이 된 것 같아 뿌듯하네요 ㅎㅎ

감사합니다.

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