ok in what way do you separate the digits from a given int ??

like if the int is 987987

how do you separate them in to 9 8 7 9 8 7 ???

is there any function to do this ?

Printable View

- 05-12-2008manzoorseparate integer into individual units
ok in what way do you separate the digits from a given int ??

like if the int is 987987

how do you separate them in to 9 8 7 9 8 7 ???

is there any function to do this ? - 05-12-2008medievalelks
Convert it to a string and peel off each character.

- 05-12-2008manzoor
is there any way to do it with the integer division and modulus operator

- 05-12-2008grumpy
To address that question, you might want to work out the remainder on dividing 987987 by 10.

- 05-12-2008manzoor
hey thanks i got it but

how do you show the output or organize them

like 987987 % 10 it gives 7 which is the last digit

i store the remainder 7 and the quotient and then again modulo the quotient and store the remainder and the quotient

but how much variables should i declare how would i know how much digits the integer has and then allocate memory for it, but i even dont know runtime memory allocation

and the number which are obtained by the modulo are the last digits is there any way to obtain the first digit - 05-12-2008medievalelks
You now know what 987987 % 10 gives you, what does 987987 / 10 give you?

You really need a C++ book. Are people really just stumbling upon compilers on the street and firing them up? - 05-12-2008manzoor
im following a c++ book

deitel and deitel how to program c++

and the questions aare from the book

Write a program that inputs a five-digit integer, separates the integer into its individual digits and prints the digits separated from one another by three spaces each. [Hint: Use the integer division and modulus operators.] For example, if the user types in 42339, the program should print:

**4 2 3 3 9**

ok i have done it

Code:`#include <iostream>`

using namespace std;

int main()

{

int x;

const int z = 10;

cout << "Enter number to be separated: ";

cin >> x;

int quotient = x / z;

int dgt5 = x % z;

int dgt4 = quotient % z;

quotient = quotient / z;

int dgt3 = quotient % z;

quotient = quotient / z;

int dgt2 = quotient % z;

quotient = quotient / z;

int dgt1 = quotient % z;

quotient = quotient / z;

cout << dgt1 << " " << dgt2 << " " << dgt3 << " " << dgt4 << " " << dgt5 << endl;

return 0;

}

- 05-12-2008anon
You could try putting that into a loop, so that you won't need separate variables to hold the results (you could print them right away).

- 05-12-2008m37h0d
to evalutate the number of digits in the number:

Code:`int x = 987987;`

unsigned int base = 10;

const unsigned int length = floor(log10(x))+1;

unsigned short *digits = new unsigned short[length];

unsigned int i = length;

while(i)

{

digits[--i]=x%base;

x/=base;

}

- 05-12-2008phantomotap
I'd suggest a good integer exclusive implementation. (As opposed to using the floating point implementation provided by the standard library.)

I'm fairly certain this came from HD, but I don't remember for certain.

Edit: http://www.hackersdelight.org/HDcode.htm

Soma

Code:`int base_10_integer_logarithm`

(

const unsigned long value_f

)

{

if(99 < value_f)

{

if (1000000 > value_f)

{

if (10000 > value_f)

{

return(3 + (((signed long)(value_f - 1000)) >> 31));

}

return(5 + (((signed long)(value_f - 100000)) >> 31));

}

if (100000000 > value_f)

{

return(7 + (((signed long)(value_f - 10000000)) >> 31));

}

return(9 + (((signed long)((value_f - 1000000000) & (~value_f))) >> 31));

}

if(9 < value_f)

{

return(1);

}

return(((signed long)(value_f - 1)) >> 31);

}