# Problem Solving: Reverse, Palindrome, and Binary Conversion

Learn to write programs to find the reverse of a number, determine whether a number is a palindrome or not, and determine the binary representation of a decimal number.

## We'll cover the following

We’ll start by finding the reverse of a number. We’ll then use the `reverse()`

function to determine whether a number is a palindrome or not and determine the binary representation of a decimal number.

## Reverse of a number

Write a function that takes an input integer from the user and returns the reverse of it.

**Sample input**

```
Passed parameter: 12345
```

**Sample output**

```
Returned value: 54321
```

Here’s the prototype of the required function:

```
int reverse(int num);
```

How can we construct a new number which is the reversal of `num`

?

### Idea: Reverse of a number

'Chop the number digit by digit from the rightmost position of `num`

and keep appending it to the right of the constructed new number `m`

.

#### Implementation

Here are the further implementation details:

- To get the last digit of
`num`

, we’ill take the modulus of the`num`

by`10`

. For example if`num`

has`12345`

then`num%10`

will give us`5`

. We can store that as a`rem`

.

```
rem = num % 10; // rem = 5
```

- Now, we want to store the reverse of
`num`

in`m`

, which is initially zero. We’ll multiply`m`

with`10`

and add`rem`

in`m`

.

```
m = (m*10)+rem; //m = 5 (0x10+5)
```

- We have
`5`

in the`m`

variable. In the next iteration, we need`1234`

instead of`12345`

, so we’ll divide`num`

by`10`

.

```
num = num / 10; // Now we have num = 1234 (12345/10)
```

- We’ll repeat all these steps until
`num`

equals`0`

. We’ll do this in a function and we will call it`reverse()`

.

Let’s write the complete code and see the output:

Get hands-on with 1200+ tech skills courses.