Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
Solved

# Algorithm

Posted on 1998-06-08
Medium Priority
370 Views
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.

0
Question by:engllf
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points

LVL 5

Accepted Solution

yonat earned 100 total points
ID: 1165462
int n = 100000; // or another max number
while (n > 1)
if ( x != x % n)
break;
else
n /= 10;

x is in the reange n to n*10.
0

LVL 4

Expert Comment

ID: 1165463
Hi !

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
Thank you.
JESUS LOVES YOU - sganta
0

LVL 11

Expert Comment

ID: 1165464
#include <math.h>
unsigned NumberOfDigits(unsigned n)
{
return n ? log10(n) + 1 : 1;
}

0

LVL 1

Expert Comment

ID: 1165465
here's one thats straight forward and has no limit to the size of the number:

#include <iostream.h>

int Power = 1;

cin >> int TheNumberToBeChecked;

while(1)
{
if(TheNumberToBeChecked >= 10 ^ Power)
Power++;
else
break;
}

try it and see what you think
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Included as part of the C++ Standard Template Library (STL) is a collection of generic containers. Each of these containers serves a different purpose and has different pros and cons. It is often difficult to decide which container to use and …
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
###### Suggested Courses
Course of the Month8 days, 11 hours left to enroll