2017-01-27 4 views
-1

Iは、次の入力を有している(Javaで)関数を記述する必要があります有限のint要素を持つフィールドでの加算?

  1. int amountFieldElements
  2. int summandOne
  3. int summandTwo

amountFieldElement範囲開始のint数値の量を記載しています1から(例えば、1,2,3,4または1だけ)。 summandOneはこの範囲のintであり、summandTwoは任意の非負整数であることができます。

この関数は、summandTwosummandOneを追加する必要があります。例えば、(summandOne + summandTwo)%のamountFieldElements

しかし、これは多くの場合、間違っている:結果はamountFieldElementそして、大きい場合、それは1

からやり直す必要があり、私は単純に剰余を使用しようとしました(3 + 1) % 4 = 0だが、それは4である必要があるだろう。

例:amountFieldElements = 4場合:1

4 + 2 = 62など

またはamountFieldElements = 1

のためになるなる

2 + 2 = 44

3 + 2 = 5としてとどまります

1 + 0 = 11

1 + 1 = 2としてとどまることも1

だろう - >任意の結果はこのように、ここで1つの

+0

'amountFieldElements'の目的は何か分かりません...もう一度説明できますか? – Mistalis

+0

'(summandOne + summandTwo-1)%amountFieldElements + 1'のような意味ですか?それは負の数ではより難しくなりますが、何が起こっているべきかを指定していません。 –

+0

合計がamountFieldElementsより大きい場合は、mod演算と同様に、より小さい数に設定する必要があります。例えば。もしamountFieldElement = 4なら 2 + 2 = 4は4のままです。 3 + 2 = 5は1になります。 4 + 2 = 6は2 などになります –

答えて

1

何かがうまくいくようになります:

int result = (summandOne + summandTwo) % amountFieldElements; 
if (result == 0) result = amountFieldElements; 

別の方法で、短いけど理解しにくいです:

int result = (summandOne + summandTwo - 1) % amountFieldElements + 1; 
+0

Heh、それは私が現在持っているのとまったく同じです。私は、これを解決するためのより良い/よりエレガントな方法が必要であると考えました。しかし、私が思ったやり方が働いているように見えることを確認することも大変です! –

関連する問題