Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void split_into_digits( int number, int digits_count, char* digit_array ) { // Записать разряды в массив, с самого младшего
- for(int i = digits_count - 1; i >= 0; i-- ) {
- digit_array[i] = number % 10;
- number /= 10;
- }
- }
- int digits_find(int number) { // Определить количество разрядов числа
- int digits_count = 1;
- while (number/10) {
- number /= 10;
- ++digits_count;
- }
- return digits_count;
- }
- unsigned int power(int basis, int exponent) { // Степень
- return (exponent == 0) ? 1 : basis * power(basis,exponent-1);
- }
- int reverse(int x){
- long long reverse = 0;
- int digits_count = digits_find(x); // Определить количество разрядов
- char* digit_array = malloc( (digits_count)*sizeof(int) );
- split_into_digits(x, digits_count, digit_array); // Превратить число в массив, со значением разряда в каждом индексе
- for(int i = 0; i < digits_count; i++ ) {
- reverse += digit_array[i] * power(10, i); // Сложить значения индексов в число
- }
- free(digit_array);
- if (reverse > (long long)INT_MAX || reverse < (long long)INT_MIN) {
- return 0;
- }
- else {
- return reverse;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement