Десятичный правый циклический сдвиг в cpp

Мне нужно сделать так называемое «десятичное правое циклическое смещение». Например, если ввод 8652 выход будет 2865,

Есть ли способ сделать эту операцию в CPP без преобразования в строки и строковые операции? Просто с помощью арифметических операций, циклов и преобразования в двоичную.

0

Решение

Если количество цифр в номере строго 4, вы можете сделать:

int src = 1234;

int dest = (src / 10) + (src % 10) * 1000;

Вот если src имеет 0 в конце концов, это получит dest быть 3 цифры. Вы должны справиться с этим.

Для других длин вы должны корректировать код соответствующим образом.

1

Другие решения

На самом деле это можно сделать простым и быстрым способом, например, для любого целого числа:

#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
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector