2016-05-14 3 views
-3

Я смущен тем, как я могу проходить через мой int, а затем поместить результат в вектор 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

Что вам нужно в этом векторе ints? Только один номер? – cuniculus

+0

yea @Caperneoignis 4-разрядный двоичный код – SDFSF

ответ

1

Хорошо, так как вы не можете использовать строки, мне придется изменить свой ответ. Так что для мешка скорости. Я буду использовать математику. Zero - это немного проблема, но просто нужно иметь оператор if, чтобы проверить владельца места после деления и просто перейти оттуда. Я уверен, что есть библиотека, которую вы можете использовать, чтобы сделать это проще, но это не похоже на то, что вы можете использовать любой из них, почти так же, как это домашнее задание. Поэтому мы должны сделать это таким образом. Кроме того, не стоит беспокоиться о десятичной запятой, так как это int, он будет обрезать десятичное пятно. soo 427/100 = 4.27, который в int будет всего лишь 4. Я считаю, что компилятор всегда усекает, если я ошибаюсь, дайте мне знать.

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); 
} 

вот как вы раздвигаете те, которые были переданы пользователем. Вы должны сделать чек, чтобы убедиться, что номер не большой. Вам нужно добавить проверку/условие, для 0, и просто выкинуть держатель места, если значение равно 0. поэтому вместо bin -= placeholder * ten. это будет bin -= ten; или просто пропустить его полностью, я не помню, если C++ обрабатывает 026 как 026 или просто 26. Запустите его один раз с нулем, и вы получите ответ.

+0

Я не хочу менять строку ... это пункт. igtg sleep сейчас – 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 
} 

И я не вижу строку, вы хотите «не изменяется», но если и были ссылаюсь в бункер, то он не будет может быть изменен с использованием дополнительной переменной

Смежные вопросы