ios - EXC_ARITHMETIC Error Objective C -


#import "calculator.h"  @implementation calculator  - (long) calcnumbers:(nsstring *)myoperator andnumberone:(nsstring *)numberone andnumbertwo:(nsstring *)numbertwo {      long result;      if ([myoperator isequaltostring:@"+"]){         result = [numberone integervalue] + [numbertwo integervalue];     } else if ([myoperator isequaltostring:@"-"]) {         result = [numberone integervalue] - [numbertwo integervalue];     } else if ([myoperator isequaltostring:@"*"]){         result = [numberone integervalue] * [numbertwo integervalue];     } else if ([myoperator isequaltostring:@"/"]) {         result = [numberone integervalue] / [numbertwo integervalue];     } else {         result = [numberone integervalue] % [numbertwo integervalue];     }      return result;  }   - (long) postfix:(nsmutablearray *)symbols {      nsmutablearray * newsymbols = [[nsmutablearray alloc]init];     nsstring * operatorsigns    = @"*/%";     long result = 0;      (int = 0; < symbols.count; i++){          // operand         if (i%2 == 0){             [newsymbols addobject:symbols[i]];         } else { // operator              if ([operatorsigns containsstring:symbols[i]]){                 result = [self calcnumbers:symbols[i] andnumberone:symbols[i-1] andnumbertwo:symbols[i+1]];                 [newsymbols insertobject:[nsnumber numberwithlong:result] atindex:i-1];                 = + 1;             } else {                 [newsymbols addobject:symbols[i]];             }         }     }      (int = 0; < newsymbols.count; i++){         if (i%2 == 1){             result = [self calcnumbers:newsymbols[i] andnumberone:newsymbols[i-1] andnumbertwo:newsymbols[i+1]];         }     }      return result; }  @end 

this class. trying run rpn calculator in command line. in calcnumbers method, there exc_arithmetic error. think asterisk working (all) unix_command. how can fix this? in advance

i don't think doing in postfix correct, don't know trying do.

the crash happens because sending bad values calcnumbers. bad values mean values in unexpected order.

for example, if myoperator @"10" , numbertwo *, enter else branch:

 result = [numberone integervalue] % [numbertwo integervalue]; 

and dividing (calculating modulo) zero, cause crash (you cannot divide zero).

how find problem (not actual solution):

add

nslog(@"operator %@, operands: %@, %@", myoperator, numberone, numbertwo); 

that should see values passed function , find problem.


Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -