"십진법 오른쪽 순환 쉬프트"를 수행해야합니다. 예를 들어, 입력이 8652
이면 2865
이 출력됩니다.cpp에서 십진수 오른쪽 순환 시프트
CPP에서 문자열 및 문자열 연산으로 변환하지 않고이 작업을 수행 할 수 있습니까? 그냥 산술 연산을 사용하여 루프 및 바이너리로 변환.
"십진법 오른쪽 순환 쉬프트"를 수행해야합니다. 예를 들어, 입력이 8652
이면 2865
이 출력됩니다.cpp에서 십진수 오른쪽 순환 시프트
CPP에서 문자열 및 문자열 연산으로 변환하지 않고이 작업을 수행 할 수 있습니까? 그냥 산술 연산을 사용하여 루프 및 바이너리로 변환.
수의 자리의 숫자가 엄격 4 인 경우, 당신은 할 수 있습니다 : 여기
int src = 1234;
int dest = (src/10) + (src % 10) * 1000;
을 src
가 마지막에 0
가있는 경우, 그것은 dest
3 자리로 얻을 것입니다. 당신이 그것을 처리해야합니다.
다른 길이의 경우 코드를 적절하게 조정해야합니다.
실제로는 어떤 INT 번호를 다음과 같이 쉽고 빠른 방법으로 수행 할 수 있습니다
#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
}
'rpm'에 대한 유형이 없습니다. 'rpm-lastDigit'는 완전히 중복되었습니다. 당신의 논리는 결국 중간에 0이있는 숫자를 깨뜨릴 것입니다. – Slava
누락 된 주셔서 감사합니다. rpm - lastDigit 여기서 완전히 필요합니다. Slava, 나는이 위치를 0으로 테스트했으며 완벽하게 작동합니다. 동의하지 않으면이 코드를 컴파일러에 넣고 실행하십시오. –
'rpm-lastDigit'은 중복되어 있으므로 그냥 제거하면 아무런 차이가 없습니다. 그리고 0 번을 여러 번 돌리려고 시도하면 문제가 표시됩니다. – Slava
당신은 * C++의 정수를 역 * 검색과 답변의 모든 종류를 얻을 수 있습니다. – NathanOliver
''의 연산이 산술 연산으로 계산됩니까? –
AndyG