How do I reverse the numbers in my program to produce the orginal numbers and the numbers in reverse?

int magic_box (int N)

{

int digit1, digit2, digit3;

digit1 = N / 100;

digit2 = N % 100 /10;

digit3 = N % 10;

return digit1 + digit2 * 10 + digit3 * 100;

}

Example

Enter a 3-digit integer and my magic box

will reverse the digits in your number for you: 739

My magic box has change your number 739 into 937

Standart solution is stack. Continue?

ummm yes?:| lol please explain this to me in lamest terms im a newb at this stuff brah

ummm yes?:| lol please explain this to me in lamest terms im a newb at this stuff brah

```
// ------------------------------------------------------------
// File : stack.h
// Created : December 11, 2005
// Author : Eugene Lykhovyd
// Description: stack class
// ------------------------------------------------------------
#ifndef __STACK_H
#define __STACK_H
#if !defined __cplusplus
#error This stack works only with C++(put .CPP extention to source file)
#endif
#if !defined __IOSTREAM_H
#include <iostream.h>
#endif
//class stack
template <class TYPE>
class stack {
private:
enum { EMPTY = -1};
enum boolean { false, true };
TYPE* s;
int max_len;
int top;
public:
stack() :max_len(1000)
{ s = new TYPE[1000]; top = EMPTY; }
stack(int size) :max_len(size)
{ s = new TYPE[size]; top = EMPTY; }
~stack() { delete [] s; }
void reset() { top = EMPTY; }
void push(TYPE c) { s[++top] = c; }
TYPE pop() { return (s[top--]); }
TYPE top_of() { return (s[top]); }
boolean empty() { return boolean(top == EMPTY); }
boolean full() { return boolean(top == max_len - 1); }
void print();
};
template <class TYPE>
void stack<TYPE>::print() {
for (int i = 0; i < max_len; ++i)
cout << s[i];
};
#endif
```

Then you just do smth like this:

```
stack<int> s = new stack(4);
s.reset();
s.push(number_1);
s.push(number_2);
s.push(number_3);
number1 = s.pop();
number2 = s.pop();
number3 = s.pop();
delete [] s;
```

Hope this is helpful information.

This is really OOP with C++. You can make this trick with numbers, strings, doubles, another classes and what you want. Really it is a standart problem. Is it works properly?

Na i cant get it to work :(

```
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
const int max_len = 1000;
enum boolean {false, true};
enum {EMPTY = -1, FULL = max_len - 1};
struct stack {
int s[max_len];
int top;
};
void reset(stack* stk)
{
stk -> top = EMPTY;
}
void push(int c, stack* stk)
{
stk -> s[++stk -> top] = c;
}
int pop(stack* stk)
{
return (stk -> s[stk -> top--]);
}
int top(stack* stk)
{
return (stk -> s[stk -> top]);
}
boolean empty(const stack* stk)
{
return (boolean) (stk -> top == EMPTY);
}
boolean full(const stack* stk)
{
return (boolean) (stk -> top == FULL);
}
main() {
stack s;
reset(&s);
push(number_1, &s);
push(number_2, &s);
push(number_3, &s);
number_1 = pop(&s);
number_2 = pop(&s);
number_3 = pop(&s);
return 0 ;
}
```

Try this one.

It is easier.:icon_idea:

Is there any stacks in your code you have sent me? )

Think it out a bit more, you almost got it:

```
Let say 123 is the number you enter
after (123%10)*100+(123%100)/10+(123)/100
you'll get 321
```

this is what i got so far

```
using namespace std;
//Named constants
const int THOUSAND = 1000;
const int HUNDRED = 100;
const int TEN = 10;
const int ONE = 1;
int main()
{
//Declare vaiables
int threedigitnum;
int digit1,digit2,digit3;
int rnum1, rnum2, rnum3;
// Statements Steps
cout << "Enter a postive Four-digit number please: ";
cin >> threedigitnum;
digit1 = threedigitnum / HUNDRED;
threedigitnum = threedigitnum % HUNDRED;
digit2 = threedigitnum / TEN ;
threedigitnum = threedigitnum % TEN;
digit3 = threedigitnum;
rnum1 = threedigitnum % TEN;
threedigitnum = threedigitnum % TEN;
rnum2 = threedigitnum % HUNDRED;
threedigitnum = threedigitnum / TEN;
rnum3 = threedigitnum / HUNDRED;
```

but its not working HELP!!!!!!

**Jboy05**, it's rude to post continuously just to bump your thread. The people here have lives outside the forum and 9 of the 14 posts here are yours. Patience!!!

Next, ignore everything **zhelih** said. Stacks are not needed at all.

Do you know how to use a `while`

loop? Do you know the % operator? I assume you know division (/). These are all you need.

If you get the *last* digit of the original number, that is the first digit of the reversed number (use %). Store it in the *reverse* integer.

Remove that digit from the original number.

Then get the 'new' last digit. Multiply the *reverse* value by 10 and add the digit. From there, think through the rest of the instructions and see what you come up with. Your `while`

loop should be less than 6 lines.

I got the first reversed integer but the second and third don't work and i need help

const int THOUSAND = 1000;

const int HUNDRED = 100;

const int TEN = 10;

const int ONE = 1;

int main()

{

//Declare vaiables

int threedigitnum;

int digit1,digit2,digit3;

int rnum1, rnum2, rnum3;

// Statements Steps

cout << "Enter a postive Four-digit number please: ";

cin >> threedigitnum;

digit1 = threedigitnum / HUNDRED;

threedigitnum = threedigitnum % HUNDRED;

digit2 = threedigitnum / TEN ;

threedigitnum = threedigitnum % TEN;

digit3 = threedigitnum;

rnum1 = threedigitnum % TEN;

threedigitnum = threedigitnum % TEN;

rnum2 = threedigitnum % HUNDRED;

threedigitnum = threedigitnum / TEN;

rnum3 = threedigitnum / HUNDRED;

cout << "My magic box has change your number " << digit1 << digit2 << digit3 << " into " << rnum1 << rnum2 << rnum3 << endl;

is there something im missing because i did the math on the reverse numbers and it works on paper