128 lines
2.8 KiB
Mathematica
128 lines
2.8 KiB
Mathematica
|
#import "Scientifica.h"
|
||
|
#import <math.h>
|
||
|
|
||
|
@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
|