#import "Scientifica.h" #import @implementation Scientifica @synthesize casella; - (IBAction) operazioneScientifica: (id) sender { NSNumber *numero, *risultato; NSString *risultatoInStringa; numero = @([[casella stringValue] doubleValue]); switch([sender tag]){ case 0:{ risultato = @(pow([numero doubleValue],2)); break; } case 1:{ risultato = @(pow([numero doubleValue],3)); break; } case 2:{ risultato = @(cos([numero doubleValue])); break; } case 3:{ risultato = @(sin([numero doubleValue])); break; } case 4:{ risultato = @(tan([numero doubleValue])); break; } case 5:{ risultato = @(1/[numero doubleValue]); break; } case 6:{ risultato = @(sqrt([numero doubleValue])); break; } case 7:{ risultato = @(cbrt([numero doubleValue])); break; } case 8:{ risultato = @(exp([numero doubleValue])); break; } case 9:{ risultato = @(log2([numero doubleValue])); break; } case 10:{ risultato = @(log10([numero doubleValue])); break; } case 11:{ risultato = @(log([numero doubleValue])); break; } case 12:{ risultato = @([self fattoriale: [numero doubleValue]]); break; } } if(fmod([risultato doubleValue],1) == 0) risultatoInStringa = [NSString stringWithFormat:@"%d", [risultato intValue]]; else risultatoInStringa = [NSString stringWithFormat:@"%f", [risultato doubleValue]]; [casella setStringValue: risultatoInStringa]; } - (IBAction) calcolaRisultato:(id)sender { NSNumber *risultato; NSString *risultatoInStringa; numero2 = @([[casella stringValue] doubleValue]); [self cancellaCasella:0]; switch (operazioneCorrente) { case 1:{ risultato = @([numero1 doubleValue] / [numero2 doubleValue]); break; } case 2:{ risultato = @([numero1 doubleValue] * [numero2 doubleValue]); break; } case 3:{ risultato = @([numero1 doubleValue] - [numero2 doubleValue]); break; } case 4:{ risultato = @([numero1 doubleValue] + [numero2 doubleValue]); break; } case 5:{ risultato = @(pow([numero1 doubleValue], [numero2 doubleValue])); break; } } if(fmod([risultato doubleValue],1) == 0) risultatoInStringa = [NSString stringWithFormat:@"%d", [risultato intValue]]; else risultatoInStringa = [NSString stringWithFormat:@"%f", [risultato doubleValue]]; [casella setStringValue: risultatoInStringa]; } - (IBAction) inviaCostante: (id) sender { if([sender tag] == 0) [casella setStringValue: [NSString stringWithFormat:@"%lf", M_PI]]; else [casella setStringValue: [NSString stringWithFormat:@"%lf", M_E]]; } - (long) fattoriale: (int) n { if (n <= 1) return 1; else return n * [self fattoriale: n-1]; } @end