# Separate digits in C++

1. Feb 9, 2006

### ranger

If I take a six digit number and store it in one variable, how can I place spaces between each digit at the output. This would be so much easier if each digit were stored in separate variables.

--thanks

2. Feb 9, 2006

### Orefa

If your number is not already in a string then first store it as a string using your favorite method (sprintf, string streams, anything you like). Then copy this string to another that is twice as long. Copy it one digit at a time and append a space after each digit.

Alternatively, process the number directly. It is an unsigned integer, right? So do "digit = number % 10", store the digit to a string (going right to left) as a character, add a space character between each one, divide "number /= 10" before proceeding with the next digit. Repeat 6 times.

3. Feb 9, 2006

### chroot

Staff Emeritus
If you're not required to use C++, consider using another language instead. Python, for example, can do such things quite easily.

In Python:

Code (Text):
from string import join, zfill

n = 12345
print join( zfill(n, 6), ' ' )
- Warren

4. Feb 10, 2006

### gerben

You can make your own function that prints integers with a space between each digit (and the possible minus sign), like this:
Code (Text):
void rangers_integer_print(int n)
{
stringstream s;
char c;

s << n;

while (s.get(c))
cout << c << " ";
}

Here is a little test program using the function (I ran it and it seems to work fine)
Code (Text):
#include <iostream>
#include <sstream>

using namespace std;

void rangers_integer_print(int n)
{
stringstream s;
char c;

s << n;

while (s.get(c))
cout << c << " ";
}

void main()
{
int n;

cout << endl << "enter number: ";
cin >> n;

rangers_integer_print(n);
}

5. Feb 16, 2006

### ranger

Here is the program...(using 5 digits)

Code (Text):

#include <iostream.h>

main()
{

int num;              //user input
int a,b,c,d,e,f,g,h;  //used for integer division and modulus operations

cout <<"Enter a five digit number." <<endl;
cin >> num;

a = num/10000;           //
b = num%10000;         //
c = b/1000;              //
d = b%1000;              //
e = d/100;               //Integer and Modulus Operations
f = d%100;              //
g = f/10;                //
h = f%10;              //

cout <<endl;
cout <<a<<"   "<<c<<"   "<<e<<"   "<<g<<"   "<<h<<" ";
cout <<endl;

return 0;

}
I wrote this program using Visual C++ 6.0. When I run the program it works fine. But when I run the program using Turbo C++ I keep getting a negative number or some other number for the output when I enter high numbers ex-98765 i get -3 -2 -3 0 -7 as the out for Turbo C++. It works fine for lower number - 12345.

Any idea why this happens?

--thanks.

6. Feb 16, 2006

### Orefa

The old Turbo-C++ integer size must be 16 bits while the MS compiler uses 32 bits. Using "unsigned int" will help a little, using "unsigned long int" will help even more.

7. Feb 16, 2006

### chroot

Staff Emeritus
I also suggest using a for loop.

- Warren

8. Apr 15, 2011

### asim_soft_eng

if you use long int in turbo c++ it will give you the right answers instead of negative answer the reason is that int can not store a a high value of integers into it it has a limit so long int can help u