2011-10-28 16 views
-2

たとえば、私はファイルから2つの整数をとるC++を持っています。たとえば、int a = 2052342とint b = 2です。bが内部にあるかどうかを検索する検索が必要です。したがって、この例では、bは内部にありますが、bが例えば7の場合はそれはありません。どのような機能を使うべきですか、それに簡単なデモを教えてください。 編集:いいえ、それは宿題ではない、私は今年のプログラマーオリンピックで競争するだろう。だから私は最後のプログラマーオリンピックにあったC++の練習のすべてをプログラミングしている。整数を整数で見つけるコマンドは何ですか?

+1

この要件は非常に人工的なので、宿題が必要です。実際、これは先生によって割り当てられた学習練習ですか? –

+0

いいえ、それは宿題ではありません。私は今年のプログラマーオリンピックに出場するでしょうから、最後のプログラマーオリンピアで行われたC + +演習をすべてプログラミングしています。 – Y2ok

+0

数字が別の数字の「内側」にあることを定義します。そこには、 "内部"の演算子がない理由があります... – tenfour

答えて

3

"int b"の部分文字列がint 'の内側にあるかどうかを確認するだけですか?Bが205の場合は、または234、それは?

おそらく

ない最良の方法を数えるだろうが、十分に簡単、文字列に各整数に変換した後、列BがstringAのサブあるかどうかを確認するために、サブストリングのチェックを行うことです。

更新: Infactは、ファイルを解析しているときに、文字列として読み込んでいますが、これは整数の問題として見ていません。部分文字列チェックだけです。整数として、あなたは、 dは0パディングが失われるまで実行されます。

あなたが部門や他の何かについて話しているのであれば、それは分割を行うことによって行うことができます。

+0

こんにちは、はい、それはカウントされます。 Okは文字列に変換しようとします。 – Y2ok

+0

あなたは除算の代わりにモジュロを意味しますか? –

+0

@Moo、それは基本的な除算やモジュロより複雑だったので、私が何を意味していたかは正確には分かりません。今OPが言っていることに基づいて、ええ、ええ? –

3

最も簡単な答えは、数字を文字列に入れて、 という表現にして、std::findを使用することです。すでに 内部形式の数字を持っているし、文字列に変換することは、あまりにも高価になる場合:aの低い数字がbに等しい場合 a % 10 == bはtrueになり、そして a /= 10は低い数字を削除します。だから:

while (a != 0 && a % 10 != b) { 
    a /= 10; 
} 
return a != 0; 

トリックを行う必要があります。

関連する問題