Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reversing numbers in C without using built in reverse function

Tags:

c

I've been given a problem in class and to solve it I can't use the built in functions that already exist in c. It has to be an algorithm that performs the action. My function is below:

int reverseDigits(int userNumber)
{

    int rev1, rev2, rev3, rev4, reverseNumber;

    rev1 = userNumber/1000;

    rev2 = (userNumber - (rev1 * 1000)) / 100;

    rev3 = (userNumber - ((rev1 * 1000) + ( rev2 * 100))) / 10;

    rev4 = (userNumber - ((rev1 *1000) + (rev2 * 100) + (rev3 * 10))) / 1;


    if (rev1 == 0 && rev2 >= 1)
    {
        reverseNumber = ((rev2 *100) + (rev3 *10) + (rev1 * 1));
        return reverseNumber;
    }

    else if (rev2 == 0 && rev3 >= 1)
    {
        reverseNumber = ((rev3 * 10) + (rev1 * 1));
    }

    else if (rev3 == 0 && rev4 >= 1)
    {
        reverseNumber = (rev4 * 1);
    }

    else 
    {
        reverseNumber = ((rev4 * 1000) + (rev3 * 100) + (rev2 * 10) + (rev1 * 1));
        return reverseNumber;
    }


}

The function gets a user input and reverses it. My problem is that when given any number with less than 4 digits (It's only supposed to receive 4) the function returns them correctly but it adds zeros. For instance I send it 678 it will return 8760 or 57 would be 7500. Thanks for any help.

like image 885
Michael Porter Avatar asked Jun 30 '26 08:06

Michael Porter


1 Answers

This will work up to 9 digits.

int reverse(int num)
{
    int res = 0, tmp;
    while(num != 0)
    {
        tmp = num % 10;
        res = res*10 + tmp;
        num /= 10;
    }
    return res;
}
like image 200
amaneureka Avatar answered Jul 02 '26 02:07

amaneureka