George Friday
George Friday

Reputation: 585

Calculator divide by zero

I created a simple calculator. Everything works great; however, if I divide by zero, I would like to show an error message. I know how to do alert popups, but I don't know how to implement it so it comes up when I divide by zero. Here is a snipped of my calculator code:

- (IBAction)buttonOperationPressed:(id)sender {
    if (currentOperation == 0) result = currentNumber;
    else {
        switch (currentOperation) {
            case 1:
                result = result + currentNumber;
                break;
            case 2:
                result = result - currentNumber;
                break;
            case 3:
                result = result * currentNumber;
                break;
            case 4:
                result = result / currentNumber;
                break;
            case 5:
                currentOperation = 0;
                break;
            default:
                break;
        }
    }
    currentNumber = 0;
    CalcDisplay.text = [NSString stringWithFormat:@"%g",result];
    if ([sender tag] == 0) result = 0;
    currentOperation = [sender  tag];
    userInTheMiddleOfEnteringDecimal = NO;

Upvotes: 0

Views: 1532

Answers (3)

Paul R
Paul R

Reputation: 212949

You can just add a test prior to doing the division e.g. change:

        case 4:
            result = result / currentNumber;
            break;

to:

        case 4:
            if (currentNumber == 0)
                // ... do alert here ...
            else
                result = result / currentNumber;
            break;

Upvotes: 4

dreamzor
dreamzor

Reputation: 5925

You have to check if the second division operand is zero, and if yes, then print an error message. Don't forget, that you can't just compare double or something with ==, you have to use presicion, like this:

case 4:
    if(ABS(currentNumber) < 1e-12) // most probably its zero
        // your message
        return;

Upvotes: 1

Ashok
Ashok

Reputation: 88

- (IBAction)buttonOperationPressed:(id)sender {
if (currentOperation == 0) result = currentNumber;
else {
    switch (currentOperation) {
       case 1:
            result = result + currentNumber;
            break;
        case 2:
            result = result - currentNumber;
            break;
        case 3:
            result = result * currentNumber;
            break;
        case 4:
            if(currentNumber == 0){
                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
            }else{

                result = result / currentNumber;

            }

            break;
        case 5:
            currentOperation = 0;
            break;
        default:
            break;
    }
}
currentNumber = 0;
CalcDisplay.text = [NSString stringWithFormat:@"%g",result];
if ([sender tag] == 0) result = 0;
currentOperation = [sender  tag];
userInTheMiddleOfEnteringDecimal = NO;

Please try this code, I have copied an pasted the code you have given and added some necessary lines to it which i felt would solve your issue.

Upvotes: 1

Related Questions