• 締切済み

抜け落ちた番号を取得する方法について

こんにちは。 抜け落ちた番号を取得するというプログラムを作成したいと思っています。 たとえば、1,2,3,4・・・・1000番までの番号があるとします。 1,2,3,4,5,6,7,10,11,12・・・というように、7の次に10がきた場合、8,9の番号が抜け落ちています。 また、1,2,3,4,5,6,7,30,31,33,34,35・・・の場合であれば、8~29および32番が抜け落ちています。 このように、抜け落ちた番号を取得するプログラムについて考えているのですが、どのように記述すればよいかわかりません。 strncmp関数を用いて、比較することはできますが、抜け落ちている番号を取得する方法について教えていただけたらと思います。 よろしくお願いします。

みんなの回答

  • nerosuke
  • ベストアンサー率33% (39/115)
回答No.3

これは只数列と数列の比較をするという事でよろしいでしょうか? もしくはなんらかの処理があって、出来た数列のデータを正規の数列 と比較するという事でしょうか? それによっても処理は異なってきますし、やり様も幾らでもあります。 前者の場合 数列と数列の比較でしたら別に難しく考えず、 一つづつ数値を見て比較先にない数値をスタックしていけばいいじゃないでしょうか? 後者の場合は数列データができる処理でBOOLFLGでも立てておけば 良いとおもいます。 strncmpやstrcmpは文字列の比較ですので数値の比較で使わないですよ。 使ってもできますが・・・ 数式でそのまま比較できるので使う意味ないです。 そもそもstrncmp自体が内部1バイトづつ比較してるだけですし。

回答No.2

その番号は、常に昇順なのですか? その番号は、常に1000などの固定値を上限とするのですか? 高々1000までで固定なら1000要素のbool配列を用意して、 最初にそれをfalseで初期化した上でリストに出現する番号に該当する要素を順にtrueにすればよろしいかと。 残った、falseが求める番号になります。

  • herbest
  • ベストアンサー率42% (15/35)
回答No.1

ループでカウントアップして、一つ前の数値との差を見ればいいと思います。

関連するQ&A