2016-03-29 9 views
-2

私は自分の電卓を作っています。私は質問に来ました。
初心者の質問に申し訳ありませんが、私はそれを見つけられませんでした。
Objective-Cの別のNSIntegerにNSIntegerを追加するにはどうすればよいですか。例えば

5 + 5 = 55
6 + 4 + 3 = 643
NSIntegerをNSIntegerに連結する

+0

電卓の質問がhttp://stackoverflow.com/questions/4892152/what-is-a-fast-c-or-objective-c-math-parserに関連している場合は、そこに解決策が見つかります – RolandasR

答えて

2

それらは(計算機のように)単一の数字である場合は、単純に行うことができます:

NSInteger newNumber = (oldNumber * 10) + newDigit; 

かの方法で:

- (NSInteger)number:(NSInteger)currentNumber byAdding:(NSInteger)newDigit { 
    //Assumes 0 <= newDigit <= 9 
    return (currentNumber * 10) + newDigit; 
} 

彼らは複数の桁を持っている場合は、連結、文字列にそれらを作ることができますそれらを整数に戻したり、単純な算術を使って10のべき乗を求めることができます。

EDIT: 6 + 4 + 3桁の時に提供されると仮定すると:

NSInteger result = [self number:[self number:6 byAdding:4] byAdding:3]; 

純粋に算術ソリューション:

- (NSInteger)powerOfTenForNumber:(NSInteger)number { 
    NSInteger result = 1; 
    while (number > 0) { 
     result *= 10; 
     number /= 10; 
    } 
    return result; 
} 


- (NSInteger)number:(NSInteger)currentNumber byAdding:(NSInteger) newNumber { 
    return (currentNumber * [self powerOfTenForNumber:newNumber]) + newNumber; 
} 
+0

下院では大いに感謝するでしょう。 – fpg1503

+1

投稿で尋ねられたように、あなたの方法を使って '6 + 4 + 3'をしてください。 – Adam

+0

これはかなり良いソリューションです、ありがとう! –

3

あなたは、文字列に変換する必要があります。ここには1つの方法があります:

NSNumber *i1 = @6; 
NSNumber *i2 = @4; 
NSNumber *i3 = @3; 

NSMutableString *str = [NSMutableString new]; 
[str appendString:[i1 stringValue]]; 
[str appendString:[i2 stringValue]]; 
[str appendString:[i3 stringValue]]; 

NSLog(@"result='%@", str); 

しかし、すべてのことを言っていると、なぜあなたは全く連結しているのかわかりません。

+0

を連結して、1つのNSInteger値を実行し、その値で何らかの操作を実行します。これを作るための他のアイデアは?私は分かりません。 –

+0

@SergeiBynas申し訳ありませんあなたの質問を理解できません。 – trojanfoe

+1

@ fpg1503なぜdownvote?それはあなたがdownvotedされ、説明を求めて、あなた自身がまったく同じことを行うことは皮肉です。 – trojanfoe

関連する問題