2013-02-15 4 views
1
if (num2 != 0) 
    printf("\nInput 3/Input 2 (int) %12d", divide); 
else if (num2 == 0) 
    printf("\nInput 3/Input 2 (int) DIV/0"); 


if (flt4 != 0) 
    printf("\nInput 2/Input 1 (double) %16.3f", divide2); 
else if (flt4 == 0) 
    printf("\nInput 2/Input 1 (double) DIV/0"); 

num2 또는 flt4를 0으로 설정하면 프로그램이 충돌합니다. 그렇지 않으면 완벽하게 정상적으로 작동합니다. if/else 문에 대한 책을보고 있었고 형식이 정확하다고 생각하지만 분명히 오류가 있습니다.C : 문이 작동하지 않는 경우

감사합니다.

편집 : 내가 분할을 정의

코드는 다음과 같습니다가 0으로 분할하는 경우

void calculate (int num1, int num2, int num3, float flt4,int* sum,int* mult, 
      int* mod,int* divide,double* mult2,double* divide2) 
{ 

*sum = num1 + flt4; 
*mult = num1 * num3; 
*mod = (num1/10)%10; 
*divide= num3/num2; 
*mult2= num1 * flt4; 
*divide2= (double)num2/num1; 
return; 
} 

내 질문은, 내가이 프로그램을 구성 할 어떻게 인쇄 기능에 그것을 표시 할 수 있도록 .

+0

. 붙여 넣기와 다른 곳에서 충돌이 발생합니다. BTW - 다른 'if'를 'else'다음에 지정해야 할 필요가 없습니다. 왜냐하면 이전 if에 이미 암시되어 있기 때문입니다. – Grzegorz

+1

'divide'는 변수이고, in-place라는 함수가 아니라는 것을 감안할 때, 당신은 ** 항상 ** 나누기를 수행하고 있다고 말하고 싶을뿐입니다. 그리고 그것을 한 후에 (그리고 결과를 나누기 '변수) 분모가 0이 아닌지 확인합니다. 물론 (0 일 경우) 프로그램이 이미 충돌했습니다. –

+2

'나누기'를 정의하는 코드를 보여줍니다. 그것은'divide = something/num2'처럼 보입니까? 그렇다면 0으로 나눕니다. 이는 유효하지 않습니다. – Brigham

답변

5

대부분 0으로 나누는 것 같습니다. divide 변수가 'if'앞에 설정되어 있고 어쨌든이 작업을 수행합니다. 첫 번째 'if'안에 넣으십시오. num2 인 경우 num2이 0이 아닌 경우이를 나눕니다.

편집 : 그것은처럼 보일 것입니다 : 코드 아무 문제가 없습니다

if (num2 != 0) { 
    divide = something/num2; 
    printf("\nInput 3/Input 2 (int) %12d", divide); 
} 
+0

나는 그렇게 하겠지만 선생님은 별도의 계산 기능으로 모든 계산을해야한다고 지정했습니다. 그렇다면 유일한 해결책은 계산 함수에서 또 다른 변수를 만드는 것입니다.이 변수가 0인지 아닌지에 대한 부울입니다. – 0x41414141

+0

값이 정확한지 확인한 후에'calculate' 함수를 사용하십시오. 변수를 검사하기 전에'* divide = num3/num2; '를 수행해서는 안됩니다. – sobol6803

+0

아. 승인. 고마워요. – 0x41414141

관련 문제