Левый круговой ход - PullRequest
1 голос
/ 20 марта 2019

Код содержит правое круговое движение, например, число 12345 будет 51234 .

вопрос в том, как я могу сделать левый круговой ход , например, 12345 будет 23451 , мой номер от 3 до 10 не только 5 цифр. Пожалуйста, помогите?

Спасибо.

#include <stdio.h>

int mPow(long n, long b);
long Counts(long);
int main() {
long q;
printf("Please Enter a number \n");
scanf("%ld",&q);
printf("Right Rotate:%ld \n",(q%10)*(mPow(10,Counts(q)-1))+q/10);

return 0;
}
long Counts(long q) {
int count=0;
      while(q!=0) {
               q/=10;
               count++;
}
return count;
}
long mPow(long n,long b) { //n=>Base, b=>power
long ret=1;
while(b!=0) {
        ret = ret*n;
        b--;
 }
 }

Ответы [ 3 ]

3 голосов
/ 20 марта 2019
#include <iostream>
using namespace std;

// steps:
// number example : 12345
// get the first digit : 5
// get the rest number : 1234
// get the number of digit in rest number : 4
// shifted number : rest number + firstDigit x 10^(num of digit)
//                : 1234        + 5          x 10^4
//                : 1234        + 50000 =   51234
int rotateRight(int num) {
    int firstDigit = num % 10;
    int restNumber = num / 10;
    int numberOfDigit = 0;
    int temp = restNumber;
    while (temp != 0) {
        temp /= 10;
        numberOfDigit++;
    }
    return restNumber + firstDigit * pow(10, numberOfDigit);
}

int main() {
    int num = 12345;
    cout << rotateRight(num) << endl;
    return 0;
}
2 голосов
/ 20 марта 2019
#include <stdio.h>  
#include <math.h>

int getdig(int n){          //to get the no of digits in a number
  int count=0;
  while(n%10>0){
    count ++;
    n=n/10;
  }
  return count;
}

int RightRotateDigit(int num) {           //exmpl 12345
  int rightmost=num%10;                    //get the last digit 5
  num=num-rightmost;                       // num is now 12340
  num=num/10;                               //num is now 1234
  int dig=getdig(num)                     //get the no of digits in 1234 i.e 4
  int add=rightmost*pow(10,dig) ;         //5*10000=50000
  num=num+add;                             //num is now 51234
  return num;
}

0 голосов
/ 20 марта 2019

Привет, эта логика может помочь вам решить проблему

int r=0,num = 12345;
r = num % 10;
num = num / 10;
num = r * 10000 + num;
/* print num and your answer will be 51234 */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...