Stefan_Lang
Вам действительно нужно узнать разницу между числами и их (читаемыми) представлениями!
Что еще более важно, вам нужно научиться читать и понимать требования:
- входные данные являются двоичными строка
- вам нужно (циклически) вращать цифры двоичного кода строка вход
- циклическое вращение означает, что вам нужно переместить MSB текущего входа в положение LSB
Чтобы поместить это в код, вам сначала нужно прочитать двоичный файл строка Пока что вы этого не делаете - Вы читаете десятичное число:
long long a;
cin >> a;
Конечно, ваш компилятор не жалуется, и вы также не получите ошибку времени выполнения, когда попытаетесь прочитать "10101". Но ваша программа не будет делать то, что вы думаете, что она делает! Если бы вы могли проверить память, вы увидите, что числа, хранящегося там '2775' если, рассматривается как шестнадцатеричное, или '10011101110101' если рассматривать как двоичные.
Аналогично, если вы читаете 10 в качестве входных данных, cin интерпретирует его как десятичное число и внутренне сохраняет его как "A" (шестнадцатеричное) или "1010" (двоичное).
Вы должны понимать, что " 10 "(десятичная), " а "(шестнадцатеричная) и "1010" (двоичная) - это одно и то же число, просто
представленный иначе. И если вы видите одно или другое представление, это не означает, что значение отличается, это означает, что инструмент, который вы используете для просмотра этих значений, использует другое представление.
Но вернемся к требованиям: ничто в требовании не говорит о том, что вы должны на самом деле хранить число! Все, что он говорит, это то, что вы должны прочитать строку и манипулировать этой строкой. Вы
мог преобразуйте эту строку в число, которое она представляет, но это не будет служить никакой цели: вы не обязаны выполнять какую-либо числовую обработку! На самом деле, вам не нужно беспокоиться о том, что (или если) вы имеете дело с числом!
Это означает, что вы можете просто использовать строку. И чтобы напомнить вам, для чего предназначена эта строка, вы можете выбрать для нее осмысленное имя:
std::string my_binary_number;
std::cin >> my_binary_number;
(Я не являюсь поклонником
using namespace std;
но дело здесь не в этом)
Что касается вращения этой струны, то это не так уж трудно сделать. Вы можете запомнить MSB:
char MSB = my_binary_number[0];
а затем вы можете удалить первую цифру и добавить MSB в конце.
Проверьте функции-члены std::string, чтобы узнать, как вы можете этого добиться:
строка - ссылка на C++ [
^]
Если вы хотите удалить ведущие '0, это тоже не проблема. Также не выполняется печать текущего состояния строки. Но если вам нужна дополнительная помощь, не стесняйтесь спрашивать.