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.
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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With