IOS基础之计算器的编写
生活随笔
收集整理的這篇文章主要介紹了
IOS基础之计算器的编写
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
IOS基礎之計算器的編寫
// // ViewController.m // Fraction_Calculator // // Created by 魯軍 on 2021/4/26. //#import "ViewController.h" #import "Calculator.h" @interface ViewController () @property(nonatomic,strong)IBOutlet UILabel *display; -(void)processDigit:(int) digit; -(void)processOp:(char)theOp; -(void)storeFracPart; //數字鍵 -(IBAction)clickDigit:(UIButton*)sender; // 算術操作鍵 -(IBAction) clickPlus; -(IBAction) clickMinus; -(IBAction) clickMultiply; -(IBAction) clickDivde; //Misc鍵 -(IBAction) clickOver; -(IBAction) clickEquals; -(IBAction) clickClear; @end @implementation ViewController {char op;int currentNumber;BOOL firstOperand,isNumerator;Calculator *myCalculator;NSMutableString *displayString; } - (void)viewDidLoad {[super viewDidLoad];self.display.text=@"";firstOperand = YES;isNumerator = YES;displayString = [NSMutableString stringWithCapacity: 40];myCalculator = [[Calculator alloc] init]; } -(void) processDigit:(int) digit{currentNumber = currentNumber * 10 + digit;[displayString appendString:[NSString stringWithFormat:@"%i",digit]];self.display.text = displayString; } -(IBAction)clickDigit:(UIButton *)sender{int digit = (int)sender.tag;[self processDigit:digit]; } -(void)processOp:(char)theOp{NSString * opStr;op = theOp;switch (theOp) {case '+':opStr = @" + ";break;case '-':opStr = @" - ";break;case '*':opStr = @" *";break;case '/':opStr = @" / ";break;}[self storeFracPart];firstOperand = NO;isNumerator = YES;[displayString appendString:opStr];self.display.text = displayString; } -(void) storeFracPart{if(firstOperand){if(isNumerator){myCalculator.operand1.numerator = currentNumber;myCalculator.operand1.denominator = 1; //例如 3 * 4/5 =}else {myCalculator.operand1.denominator = currentNumber;}}else if (isNumerator) {myCalculator.operand2.numerator = currentNumber;myCalculator.operand2.denominator = 1;}else{myCalculator.operand1.denominator = currentNumber;firstOperand = YES;}currentNumber = 0; } -(IBAction)clickOver{[self storeFracPart];isNumerator = NO;[displayString appendString:@"/"];self.display.text = displayString; } //算術操作鍵 -(IBAction)clickPlus{[self processOp:'+']; } - (void)clickMinus{[self processOp:'-']; } - (void)clickMultiply{[self processOp:'*']; } - (void)clickDivde{[self processOp:'/']; } //Misc 鍵 - (void)clickEquals{if(firstOperand==NO){[self storeFracPart];[myCalculator performOperation:op];[displayString appendString:@" = "];[displayString appendString:[myCalculator.accumulator convertToString]];self.display.text = displayString;currentNumber = 0;isNumerator = YES;firstOperand = YES;[displayString setString:@""];} } - (void)clickClear{isNumerator = YES;firstOperand = YES;currentNumber = 0;[myCalculator clear];[displayString setString:@""];self.display.text = displayString; } @end // // Calculator.h // Fraction_Calculator // // Created by 魯軍 on 2021/5/9. //#import <Foundation/Foundation.h> #import "Fraction.h" NS_ASSUME_NONNULL_BEGIN @interface Calculator : NSObject @property(nonatomic,strong)Fraction *operand1,*operand2,*accumulator; -(Fraction *)performOperation:(char)op; -(void)clear; @end NS_ASSUME_NONNULL_END // // Calculator.m // Fraction_Calculator // // Created by 魯軍 on 2021/5/9. //#import "Calculator.h" @implementation Calculator - (instancetype)init {self = [super init];if (self) {_operand1 = [[Fraction alloc] init];_operand2 = [[Fraction alloc] init];_accumulator = [[Fraction alloc] init];}return self; } - (void)clear{_accumulator.numerator = 0;_accumulator.denominator = 0; } - (Fraction *)performOperation:(char)op{Fraction *result;switch (op) {case '+':result = [_operand1 add:_operand2];break;case '-':result = [_operand1 subtract:_operand2];break;case '*':result = [_operand1 multiply:_operand2];break;case '/':result = [_operand1 divide:_operand2];break;}_accumulator.numerator = result.numerator;_accumulator.denominator = result.denominator;return _accumulator; } @end // // Fraction.h // Fraction_Calculator // // Created by 魯軍 on 2021/5/9. //#import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface Fraction : NSObject @property int numerator,denominator; -(void) print; -(void) setTo:(int) n over:(int) d; -(Fraction *) add:(Fraction *)f; -(Fraction *) subtract:(Fraction *)f; -(Fraction *) multiply:(Fraction *)f; -(Fraction *) divide:(Fraction *)f; -(void)reduce; -(double)convertToNum; -(NSString*)convertToString; @end NS_ASSUME_NONNULL_END // // Fraction.m // Fraction_Calculator // // Created by 魯軍 on 2021/5/9. //#import "Fraction.h"@implementation Fraction - (void)setTo:(int)n over:(int)d{self.numerator = n;_denominator = d; } - (void)print{NSLog(@"%i/%i",_numerator,_denominator); } - (double)convertToNum{if(_denominator!=0)return (double) _numerator / _denominator;elsereturn NAN; } - (NSString *)convertToString{if(_numerator==_denominator)if(_numerator==0)return @"0";elsereturn @"1";else if (_denominator==1)return [NSString stringWithFormat:@"%i",_numerator];elsereturn [NSString stringWithFormat:@"%i/%i",_numerator,_denominator]; } //添加一個分數到消息的接收器 - (Fraction *)add:(Fraction *)f{//將兩個分數相加Fraction *result = [[Fraction alloc] init];result.numerator = _numerator *f.denominator + _denominator * f.numerator;result.denominator = _denominator*f.denominator;[result reduce];return result; } - (Fraction *)subtract:(Fraction *)f{Fraction *result = [[Fraction alloc] init];result.numerator = _numerator*f.denominator - _denominator*f.numerator;result.denominator = _denominator*f.denominator;[result reduce];return result; } - (Fraction *)multiply:(Fraction *)f{Fraction *result = [[Fraction alloc] init];result.numerator = _numerator*f.numerator;result.denominator = _denominator *f.denominator;[result reduce];return result; } - (Fraction *)divide:(Fraction *)f{Fraction *result = [[Fraction alloc] init];result.numerator = _numerator*f.denominator;result.denominator = _denominator *f.numerator;[result reduce];return result; } - (void)reduce{int u = _numerator;int v = _denominator;int temp;if(u==0)return;else if (u<0)u = -u;while(v!=0){temp = u%v;u=v;v=temp;}_numerator/=u;_denominator/=u; } @end代碼在我的主頁下
總結
以上是生活随笔為你收集整理的IOS基础之计算器的编写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 创业者自述:我的第一桶金是如何来的
- 下一篇: C读写ini文件