問題タブ [josephus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
96 参照

arrays - Cでの循環配列と削除、最後の「生きている」要素インデックスを返す方法は?

私は、circle1 本の剣を持っている固定サイズの人々をシミュレートするコードを作成しようとしています。現在に最も近い「生きている人」indexが排除され、剣は次の生きている人(殺された人の後)に渡されます。

連結リストなしで書いてほしい。

例: 3 人のグループ: arr[0] = 1, arr[1] = 1, arr[2] = 1

最初のターン:

  • arr[0] KILLS arr[1] and the sword gets PASSED to arr[2]

最初のターン後の要素の値:

arr[0] = 1, arr[1] = 0, arr[2] = 1

2 番目のターン:

  • arr[2] KILLS arr[0] and stays the last player

2 ターン目以降の要素の値:

arr[0] = 0, arr[1] = 0, arr[2] = 1

  • arr[2]'s index gets returned by the main function.

私が考えたのは:

  • 配列
  • すべての要素の値を設定する1
  • 回覧して毎回チェックif (1 == arr[i])
  • この男を殺すか、単に剣を渡すかを決定するフラグを設定します。
  • 生きている最後のプレーヤーのインデックスであることを示す現在のインデックスを返します。

たとえば、グループに 5 人いるとします。 [1] [1] [1] [1] [1]

第 1 ラウンド:

give_sword = 0

i = 0ifではありませんので最初は入りませgive_sword1。2 番目の に入り、if関数を使用して最も近い生きている人物を見つけ、findClosestLivingPersonそのインデックスを取得して値を0(== 最も近い生きている人物を殺す) に設定します。に設定give_sword1ます。

を減らし、players_counterプレイヤーが 1 人しか残っていないかどうかを確認します。そうでない場合は、ループを続行します。

これは私のコードです:

コンパイラは次のように述べています。

関数「main」: last_man.c:23:43: 警告: 効果のないステートメント [-Wunused-value] 23 | for (i = 0; i < group_size; (i+1) % group_size)

last_man.c: 関数 'findClosestLivingPerson' 内: last_man.c:49:42: 警告: 効果のないステートメント [-Wunused-value] 49 | for (; index < group_size; (index+1) % group_size)

(index+1) % group_sizeは、この配列を循環するためのものです。