2016-05-14 10 views
-3

私は自分のintを繰り返し処理する方法を混乱させて、結果をint vectorに入れてしまいます。ゲームのためにこれを行う必要があります。助けは非常に高く評価されます。正直なところ、私は持っていませんあなたは文字列を使用することはできませんので、int型を反復処理します。この機能を作るためにどのようなアイデア、...intを反復処理する方法は?

cout << "\n PLEASE ENTER A 4 DIGIT BINARY! OR PROGRAM WILL EXIT \n\n\t"; 
cin >> binaryCin; 
evaluateNum(binaryCin);  

void MasterMind::evaluateNum(int &bin) { 
    // Need to iterate through binarycin and then put it in a vector<int>.. 
} 
+0

だから、1010を期待していますか?または1234?または1 2を入力3などを入力しますか? – Caperneoignis

+0

このintのベクトルで何をしたいですか? 1つの数字だけ? – cuniculus

+0

yea @Caperneoignis a 4thread binary – SDFSF

答えて

1

さて、私は私の答えを変更する必要があります。速度の袋のために。私は数学を使用します。ゼロはちょっと問題ですが、除算後にプレースホルダを確認するためのif文があります。私はあなたがこれをより簡単にするために使用できるライブラリがあると確信していますが、あなたがそれを使うことができるようには聞こえません。だから私たちはこのようにしなければなりません。また、小数点以下は切り捨てるので、小数点以下については心配しないでください。 soo 427/100 = 4.27 intでちょうど4になるでしょう。私が間違っているとコンパイラは常に切り詰めると信じています。あなたは、ユーザによって渡されたint型を引き離す方法

void MasterMind::evaluateNum(int &bin) 
{ 
    std::vector<int> numbers(); 
    int thousand,hundred,ten; 
    int placeholder = 0; 
    thousand = 1000; 
    //bin = 4327 
    placeholder = thousand/bin; 
    //subtract the thousand position out of bin 
    bin -= placeholder * thousand; 
    numbers.push_back(placeholder); 
    //now you have 327 
    //subtract the hundreds spot now 
    hundred = 100; 
    placeholder = hundred/bin; 
    bin -= placeholder * thousand; 
    numbers.push_back(placeholder); 
    //now you have 27 now tens 
    ten = 10; 
    placeholder = ten/bin; 
    bin -= placeholder * ten; 
    //now you have just 7 in bin and 2 in place holder 
    numbers.push_back(placeholder); 
    numbers.push_back(bin); 
} 

のthats。あなたは、数字が大きくないことを確認するためのチェックを行うべきです。 0の場合、チェック/条件を追加する必要があります。値が0の場合は、プレースホルダを削除する必要があります。bin -= placeholder * tenの代わりに。それはbin -= tenでしょう。またはそれを完全にスキップすると、C++が026を026または26だけ処理するかどうかはわかりません。ゼロで1回実行すると、答えが出ます。

+0

私は文字列に変更したくない.. thats点。今すぐ眠る – SDFSF

0

これは固定数学基づく計算

void MasterMind::evaluateNum(int &bin) { 
     int n = bin; 
     int i=0; 
     vector<int> arr; 
     while(n!=0){     // loop will work for any size of binary number 
      int tmp = n & 1; 
      arr.push_back(tmp); 
      n>>=1; 
      i++; 
     } 
     std::reverse(arr.begin(),arr.end()); // since loop will give you reverse 
} 

を行うよりも良いだろうと私はあなたが「変更されていない」が、uはビンに参照のうえれた場合、それはしませんしたいと思う任意の文字列が表示されません余分な変数を使用して変更する

関連する問題