Advertisement
Guest User

Untitled

a guest
Nov 19th, 2024
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. void split_into_digits( int number, int digits_count, char* digit_array ) { // Записать разряды в массив, с самого младшего
  2.  
  3. for(int i = digits_count - 1; i >= 0; i-- ) {
  4. digit_array[i] = number % 10;
  5. number /= 10;
  6. }
  7.  
  8. }
  9.  
  10. int digits_find(int number) { // Определить количество разрядов числа
  11.  
  12. int digits_count = 1;
  13.  
  14. while (number/10) {
  15. number /= 10;
  16. ++digits_count;
  17. }
  18.  
  19. return digits_count;
  20.  
  21. }
  22.  
  23. unsigned int power(int basis, int exponent) { // Степень
  24.  
  25. return (exponent == 0) ? 1 : basis * power(basis,exponent-1);
  26.  
  27. }
  28.  
  29.  
  30. int reverse(int x){
  31.  
  32. long long reverse = 0;
  33.  
  34. int digits_count = digits_find(x); // Определить количество разрядов
  35.  
  36. char* digit_array = malloc( (digits_count)*sizeof(int) );
  37. split_into_digits(x, digits_count, digit_array); // Превратить число в массив, со значением разряда в каждом индексе
  38.  
  39. for(int i = 0; i < digits_count; i++ ) {
  40. reverse += digit_array[i] * power(10, i); // Сложить значения индексов в число
  41. }
  42. free(digit_array);
  43.  
  44.  
  45. if (reverse > (long long)INT_MAX || reverse < (long long)INT_MIN) {
  46. return 0;
  47. }
  48. else {
  49. return reverse;
  50. }
  51.  
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement