View Full Version : Separate digits in C++
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
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.
If you're not required to use C++, consider using another language instead. Python, for example, can do such things quite easily.
In Python:
from string import join, zfill
n = 12345
print join( zfill(n, 6), ' ' )
- Warren
You can make your own function that prints integers with a space between each digit (and the possible minus sign), like this:
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)
#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);
}
Here is the program...(using 5 digits)
#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.
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.
I also suggest using a for loop.
- Warren
vBulletin® v3.7.6, Copyright ©2000-2009, Jelsoft Enterprises Ltd.