2011-07-23 6 views
0

私は1つのintを2つのintに分割する必要があります。最初のintは定数ではありません。問題は1つだけです。なぜなら、整数だけが欲しいからです。たとえば、int = 5の場合、int(2)は2、int(3)は= 3となります。あなたはabはできるだけx/2に近いですx = a + bを、表現したいと仮定するとintを他の2つのintに分割する

+0

あなたの質問は非常に不明です。 'n-1'と' 1'は常に 'n'に追加され、あなたが説明した通りにその法案に適合します。 – Mat

答えて

3

あなたが試すことができますceilとfloorは、奇数入力の場合は2と3のような結果を出すために数学から機能します。

int(2)=ceil(int/2); //will produce 3 for input 5 
    int(3)=floor(int/2); //will produce 2 for input 5 
+0

整数分割が切り詰めるので、ceilの引数を倍精度化または浮動小数点数にキャストすることをお勧めします...したがって、int(2)= ceil((float)int/2.0f); ' –

4

:擬似コードだ

a = ceiling(x/2.0); 
b = floor(x/2.0); 

は、あなたはあなたのライブラリーから床と天井の実際の機能を見つける必要があります。除算が浮動小数点数として実行されていることを確認してください。

として純粋な整数:

a = x/2 + (x % 2 == 0 ? 0 : 1); 
b = x/2 

(それが負の数のための部門と剰余の動作に依存しますので、これは、負の数のビット怪しいかもしれません。)

0

私の答えはObjective-Cではなく、これを簡単に翻訳できると思います。 私の考えは次のとおりです。

part1 = source_number div 2 
part2 = source_number div 2 + (source_number mod 2) 

この方法で開始番号が奇数である場合に、第2の数が大きくなります。

関連する問題