2016-06-14 3 views
-3

여기에 부동 소수점 예외가 발생했습니다. 이유는 알 수 없습니다.겉으로보기에 아무 이유없이 부동 소수점 예외가 발생했습니다.

int i = this -> numerator; 
while(i > 1){ 
    if ((this -> numerator % i == 0) && (this -> denominator % i == 0)) { 
     this -> numerator = this -> numerator/i; 
     this -> denominator = this -> denominator/i; 
    } 
    i = i - 1; 
} 

목표는 분수를 단순화하는 것입니다. 보시다시피, 물건은 i와 i> 1에 의해서만 mod를 얻습니다. 똑같은 분열이 있습니다. 이상하게도 while 루프 내에서 코드를 주석 처리하더라도 오류가 계속 발생하지만 while 루프를 완전히 제거하면 코드가 제대로 작동합니다. for 루프를 대신 사용하려고 할 때도 똑같은 일이 발생했습니다. 내가 뭘 놓치고 있니? 내가 while 루프 내에서 코드를 주석 경우에도이 오류를 던지고 계속됩니다 이상하게

+6

모든'this ->'를 제거하십시오. 그것들은 무의미하고 혼란 스럽습니다. –

+0

루프 입구에서 'i'의 크기는 얼마이며 '* this'의 값은 무엇입니까? 그렇다면 '분자'와 '분모'의 유형은 무엇입니까? – davidbak

+3

작동하지 않는 전체 코드 예제를 보여줍니다. –

답변

1

,

는 그 다음 문제는이 코드 블록에 있지 않습니다. 지금까지 컴파일되지 않고 오류없이 실행되었습니다.

내가 while 루프를 완전히

제거하지만 만약 코드가 잘 작동 그런 다음, 당신이 부동 소수점 예외를 만드는이 코드 블록 이후 변수 i 뭔가를하고있는 것입니다.

디버거로 코드를 실행하여 실패한 곳을 확인하십시오.

+0

네 말이 맞아. 다른 멤버 함수에 오류가 있다는 것을 알려줍니다. 감사! (비록 내가 범위에 있지 않을 것이기 때문에 내가 포함하지 않는 완전히 다른 블록) –

+0

그렇다면 답을 받아 들여 질문을 닫으십시오. – shrike

+0

아니요, 대답을 수락해도 질문이 닫히지 않으며 답변이 아닙니다. 그러나이 문제는이 사이트에서 그러한 질문에 대한 요구 사항을 충족시키지 못하는 것으로 마감해야합니다. –

관련 문제