Eliminating 0

I've got a string of n numbers,introduced from the keyboard.For every number in the string that contains 0 I am asked to display it without 0.Example:
15 543 3001 601 -------> 15 543 31 61
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  int i,n,x,a,c;
    cout<<"n=";cin>>n;
    for(i=1;i<=n;i++)
    {
        a=0;
        cout<<"x=";cin>>x;
        while(x)
        {
            c=x%10;
            x=x/10;
            if(c!=0)
                a=a*10+c;
        }
    }
    cout<<a<<endl;

Here's the code I've written..It displays the last number,but reversed(54-->45,for example.)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>

unsigned int strip_zeroes( unsigned int number )
{
    if( number < 10 ) return number ;
    else if( number%10 == 0 ) return strip_zeroes( number/10 ) ;
    else return strip_zeroes( number/10 ) * 10 + number%10 ;
}

int main()
{
    std::cout << "how many numbers? " ;
    int cnt ;
    std::cin >> cnt ;

    for( int i = 0 ; i < cnt ; ++i )
    {
        std::cout << "number? " ;
        unsigned int number ;
        std::cin >> number ;

        int number_sans_zeroes = strip_zeroes(number) ;
        if( number_sans_zeroes != 0 ) std::cout << number_sans_zeroes ;
        std::cout << '\n' ;
    }
}
Version without functions:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>

int main()
{
    std::cout << "how many numbers? " ;
    int cnt ;
    std::cin >> cnt ;

    for( int i = 0 ; i < cnt ; ++i )
    {
        std::cout << "number? " ;
        unsigned int number ;
        std::cin >> number ;

        // get the number stripped of zeroes, with digits in reverse order
        // (this is a loop loop exactly like the one in your original code)
        unsigned int no_zeroes_reversed = 0 ;
        while( number != 0 )
        {
            const int digit = number%10 ;
            if( digit != 0 ) no_zeroes_reversed = no_zeroes_reversed * 10 + digit ;
            number /= 10 ;
        }

        // run the another similar loop to reverse the digits of no_zeroes_reversed
        unsigned int no_zeroes = 0 ;
        while( no_zeroes_reversed != 0 )
        {
            no_zeroes = no_zeroes * 10 + no_zeroes_reversed%10 ;
            no_zeroes_reversed /= 10 ;
        }

        if( no_zeroes != 0 ) std::cout << no_zeroes << '\n' ;
    }
}
Topic archived. No new replies allowed.