audreych

12934 - Rotate Numbers

Jan 1st, 2021 (edited)
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void rotatefun(int, int*, int*);
  5. int main(){
  6.     char arr[105] = {};
  7.     int num[105] = {}, new_num[105] = {};
  8.     int rotate = 1;
  9.     scanf("%s", arr);
  10.     int len = strlen(arr);
  11.     for(int i = 0; i < len; i++){
  12.         // change a string array with number and put it into a new int array
  13.         num[i] = arr[i] - '0';
  14.     }
  15.     //for(int i = 0; i < len; i++) printf("%d", num[i]);
  16.    
  17.     for(int i = 0; i < len; i++){
  18.         if(num[i] == 2 || num[i] == 3 || num[i] == 4 || num[i] == 7 ){
  19.             rotate = 0;
  20.             break;
  21.         }
  22.         else rotate = 1;
  23.     }
  24.    
  25.     if(rotate == 0) printf("No\n");
  26.     else {
  27.         rotatefun(len, num, new_num);
  28.     }
  29.     return 0;
  30. }
  31.  
  32. void rotatefun(int len, int *num, int *new_num){
  33.     for(int i = 0; i < len; i++){
  34.         if(num[i] == 6) num[i] = 9;
  35.         else if(num[i] == 9) num[i] = 6;
  36.     }
  37.    
  38.     for(int j = 0; j < len; j++){
  39.         new_num[j] = num[len - 1 - j];
  40.         //printf("%d\n", new_num[j]);
  41.     }
  42.    
  43.     int k = 0;
  44.     int zero = 0;
  45.     //deleting leading zeroes
  46.     while(k != len){
  47.         if(new_num[k] == 0){
  48.             zero = 1;
  49.             k++;
  50.             continue;
  51.         } else if(new_num[k] != 0){
  52.             break;
  53.         }
  54.     }
  55.     //printf("k = %d ", k);
  56.     if(zero == 1){
  57.         for(int m = k; m < len - 1;m++){
  58.             // starts from k-th element, delete leading zero
  59.             printf("%d", new_num[m]);
  60.         }
  61.         printf("%d\n", new_num[len - 1]);
  62.     } else if (zero == 0){
  63.         for(int m = 0; m < len - 1; m++){
  64.             // starts from element 0 because no leading zero
  65.             printf("%d", new_num[m]);
  66.         }
  67.         printf("%d\n", new_num[len - 1]);
  68.     }
  69.    
  70.     return;
  71. }
Add Comment
Please, Sign In to add comment