Хорошо, так как вы не можете использовать строки, мне придется изменить свой ответ. Так что для мешка скорости. Я буду использовать математику. 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. Запустите его один раз с нулем, и вы получите ответ.
Итак, вы ожидаете 1010? Или 1234? Или 1 введите 2 введите 3 и т. Д.? – Caperneoignis
Что вам нужно в этом векторе ints? Только один номер? – cuniculus
yea @Caperneoignis 4-разрядный двоичный код – SDFSF