#include <math.h>

.

if (X >= 0)

{

unsigned int n = X == 0 ? 0 : log10((double)X);

// 0 to 9, n = 0

// 10 to 99, n = 1

// 100 to 999, n = 2

// 1000 to 9999, n = 3

// ...

}

else

{

...

}

Solved

Posted on 1998-06-08

What is the best algorithm to check a number is in which particular range of:

0 to 9

10 to 99

100 to 999

1000 to 9999

10000 to 99999

...rate at exponential of 10

E.g X = 555 is in the range of 100 - 999

I use a if-else-then to do the checking but its looks terribly ugly.

Any advice?

0 to 9

10 to 99

100 to 999

1000 to 9999

10000 to 99999

...rate at exponential of 10

E.g X = 555 is in the range of 100 - 999

I use a if-else-then to do the checking but its looks terribly ugly.

Any advice?

3 Comments

#include <math.h>

.

if (X >= 0)

{

unsigned int n = X == 0 ? 0 : log10((double)X);

// 0 to 9, n = 0

// 10 to 99, n = 1

// 100 to 999, n = 2

// 1000 to 9999, n = 3

// ...

}

else

{

...

}

I have simple and beautiful algorithm and solution for your problem.

ALGORITHM

1. Read the number into "n";

2. Store this number n as a string into test

i.e., test = string(n);

3. Get the length of the string into length

length = string_length(n);

4. Now

Range_From = power(10,length-1)

Range_To = power(10,length)-1

5. End of the algorithm

/* Here the solution in C++ */

#include <iostream.h>

#include <string.h>

#include <math.h>

void main(void)

{

int n,len,ifrom,ito;

char *test;

cout << "Enter a number ";

cin >>n;

test = itoa(n); /* Converts integer to Ascii */

len = strlen(test);

ifrom = pow(10,len-1);

ito = pow(10,len)-1;

cout << "The number "<<n<<" is in the range from "<<ifrom<<" to "<<ito<<endl;

}

This algorithm is tested and it works fine. If you are interested with my answer

Please reject the above answer and accept my answer.

Thank you.

JESUS LOVES YOU - sganta

Title | # Comments | Views | Activity |
---|---|---|---|

Write Bitmap Image Data to a New Image File C++ | 3 | 62 | |

multiple DLLs with the same namespace | 5 | 83 | |

C++ standard library based binary archive format | 6 | 86 | |

Add values of each row in an array | 3 | 36 |

Join the community of 500,000 technology professionals and ask your questions.

Connect with top rated Experts

**11** Experts available now in Live!