Мне нужно сделать так называемое «десятичное правое циклическое смещение». Например, если ввод 8652
выход будет 2865
,
Есть ли способ сделать эту операцию в CPP без преобразования в строки и строковые операции? Просто с помощью арифметических операций, циклов и преобразования в двоичную.
Если количество цифр в номере строго 4, вы можете сделать:
int src = 1234;
int dest = (src / 10) + (src % 10) * 1000;
Вот если src
имеет 0
в конце концов, это получит dest
быть 3 цифры. Вы должны справиться с этим.
Для других длин вы должны корректировать код соответствующим образом.
На самом деле это можно сделать простым и быстрым способом, например, для любого целого числа:
#include <iostream>
using namespace std;
int concatenate (int x, int y)
{
int pow = 10;
while (y >= pow)
pow *= 10;
return x * pow + y;
}
int main()
{
int rpm = 8652;
// Cyclic Right Shift
int lastDigit = rpm % 10; //getting the last digit
int otherDigits = (rpm - lastDigit)/10; //rest of the digits
int CRS = concatenate(lastDigit, otherDigits); //concatenation
}