Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > How to read a part of an integer

Reply
Thread Tools

How to read a part of an integer

 
 
panther
Guest
Posts: n/a
 
      05-03-2007
Hi,

I need to read part of an integer by another variable.
As example,
if user enter 761120921,
then, i = 761120921
j = 76
k = 112
l = 0921 as that.
can you explain how do i acheive this?

 
Reply With Quote
 
 
 
 
Zeppe
Guest
Posts: n/a
 
      05-03-2007
panther wrote:
> Hi,
>
> I need to read part of an integer by another variable.
> As example,
> if user enter 761120921,
> then, i = 761120921
> j = 76
> k = 112
> l = 0921 as that.
> can you explain how do i acheive this?
>


you need to split the number manually. At first, do you need 0921 or 921
as a last number? because if you don't want to loose the zero you have
to work at a string level. If you want to loose the zero, and you just
want to work generally with integers, you can just for example take the
last four digits by doing

i % 10000;

and then go for the high order digits by

i /= 10000;

Regards,

Zeppe
 
Reply With Quote
 
 
 
 
seank76
Guest
Posts: n/a
 
      05-03-2007
On May 3, 12:53 pm, panther <(E-Mail Removed)> wrote:
> Hi,
>
> I need to read part of an integer by another variable.
> As example,
> if user enter 761120921,
> then, i = 761120921
> j = 76
> k = 112
> l = 0921 as that.
> can you explain how do i acheive this?


panther's response is the right way to do it.
However, if you simply need to turn the integer into a string, you
could use itoa(int) or a some other comparable functions.

 
Reply With Quote
 
Marcus Kwok
Guest
Posts: n/a
 
      05-03-2007
panther <(E-Mail Removed)> wrote:
> I need to read part of an integer by another variable.
> As example,
> if user enter 761120921,
> then, i = 761120921
> j = 76
> k = 112
> l = 0921 as that.
> can you explain how do i acheive this?


One way would be to use the % and / operators. For example,

i = 761120921
j = i / 10000000
k = (i / 10000) % 1000
l = i % 1000

Another way would be to read the number in as a string, and use the
string::substr() function.

--
Marcus Kwok
Replace 'invalid' with 'net' to reply
 
Reply With Quote
 
Marcus Kwok
Guest
Posts: n/a
 
      05-03-2007
Marcus Kwok <(E-Mail Removed)> wrote:
> panther <(E-Mail Removed)> wrote:
>> I need to read part of an integer by another variable.
>> As example,
>> if user enter 761120921,
>> then, i = 761120921
>> j = 76
>> k = 112
>> l = 0921 as that.
>> can you explain how do i acheive this?

>
> One way would be to use the % and / operators. For example,
>
> i = 761120921
> j = i / 10000000
> k = (i / 10000) % 1000
> l = i % 1000


Actually it should be l = i % 10000 if you wanted the last 4 digits.

> Another way would be to read the number in as a string, and use the
> string::substr() function.


--
Marcus Kwok
Replace 'invalid' with 'net' to reply
 
Reply With Quote
 
Default User
Guest
Posts: n/a
 
      05-03-2007
seank76 wrote:

> On May 3, 12:53 pm, panther <(E-Mail Removed)> wrote:
> > Hi,
> >
> > I need to read part of an integer by another variable.
> > As example,
> > if user enter 761120921,
> > then, i = 761120921
> > j = 76
> > k = 112
> > l = 0921 as that.
> > can you explain how do i acheive this?

>
> panther's response is the right way to do it.
> However, if you simply need to turn the integer into a string, you
> could use itoa(int) or a some other comparable functions.


That is a non-standard function, and therefore is platform-specific and
off-topic in this group. There are a number of ways to accomplish this
with resorting to such things.

The best idea would be to use std::string and the capabilities from
sstream.



Brian

 
Reply With Quote
 
Jim Langston
Guest
Posts: n/a
 
      05-05-2007
"panther" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) oups.com...
> Hi,
>
> I need to read part of an integer by another variable.
> As example,
> if user enter 761120921,
> then, i = 761120921
> j = 76
> k = 112
> l = 0921 as that.
> can you explain how do i acheive this?


It depends. It sounds to me like this is some type of part number with
different positions specifying different things. I once did this in a
retail system and realized when they ran out of space in the 2 byte int that
I should of use strings so they could use characters.

Anyway, it depends mostly becuase you said "if user enters..." which means
you are dealing with user input. I find the best way to deal with user
input is by characters, by strings. Once you get it in a string you can see
exactly what they entered.

That is, what if they etenered
071120921
when that gets put into an int it becomes
71120921
And now you have more of a headache, especially if you have different lenght
numbers they can enter. So, I would accept their input into a string.
Validate that all characters are numeric. Break up the characters into the
parts I want, load them in.

Untested pseudo type code:

int StrToInt( const std::string& Number )
{
std::stringstring Stream;
Stream << Number;
int Result;
Stream >> Result;
return Result;
}

std::string Number;
while ( std::cin >> Number && Number != "" )
{
if ( Number.length() != 9 )
{
std::cout << "Input must be 9 digits. Try again.\n";
break;
}
if ( ! isdigits( Number ) )
{
std::cout << "Only numbers 0-9 are allowed. Try again.\n";
break;
}
// at this point we know we have 9 numberic characters in Number
int j = StrToInt( Number.substr( 0, 2 ) );
int k = StrToInt( Number.substr( 2, 3 ) );
int l = StrToInt( Number.substr( 5, 4 ) );

// Do whatever with j, k and l here as integers
}

If you aren't dealing directly with user input but are receiving an int as
input, then I've just been blowing hot air

The general rule is: when dealing with user input treat it as
characters/strings as long as possible to validate it. That's the rule I
follow anyway.


 
Reply With Quote
 
panther
Guest
Posts: n/a
 
      05-06-2007
On May 6, 3:42 am, "Jim Langston" <(E-Mail Removed)> wrote:
> "panther" <(E-Mail Removed)> wrote in message
>
> news:(E-Mail Removed) oups.com...
>
> > Hi,

>
> > I need to read part of an integer by another variable.
> > As example,
> > if user enter 761120921,
> > then, i = 761120921
> > j = 76
> > k = 112
> > l = 0921 as that.
> > can you explain how do i acheive this?

>
> It depends. It sounds to me like this is some type of part number with
> different positions specifying different things. I once did this in a
> retail system and realized when they ran out of space in the 2 byte int that
> I should of use strings so they could use characters.
>
> Anyway, it depends mostly becuase you said "if user enters..." which means
> you are dealing with user input. I find the best way to deal with user
> input is by characters, by strings. Once you get it in a string you can see
> exactly what they entered.
>
> That is, what if they etenered
> 071120921
> when that gets put into an int it becomes
> 71120921
> And now you have more of a headache, especially if you have different lenght
> numbers they can enter. So, I would accept their input into a string.
> Validate that all characters are numeric. Break up the characters into the
> parts I want, load them in.
>
> Untested pseudo type code:
>
> int StrToInt( const std::string& Number )
> {
> std::stringstring Stream;
> Stream << Number;
> int Result;
> Stream >> Result;
> return Result;
>
> }
>
> std::string Number;
> while ( std::cin >> Number && Number != "" )
> {
> if ( Number.length() != 9 )
> {
> std::cout << "Input must be 9 digits. Try again.\n";
> break;
> }
> if ( ! isdigits( Number ) )
> {
> std::cout << "Only numbers 0-9 are allowed. Try again.\n";
> break;
> }
> // at this point we know we have 9 numberic characters in Number
> int j = StrToInt( Number.substr( 0, 2 ) );
> int k = StrToInt( Number.substr( 2, 3 ) );
> int l = StrToInt( Number.substr( 5, 4 ) );
>
> // Do whatever with j, k and l here as integers
>
> }
>
> If you aren't dealing directly with user input but are receiving an int as
> input, then I've just been blowing hot air
>
> The general rule is: when dealing with user input treat it as
> characters/strings as long as possible to validate it. That's the rule I
> follow anyway.


Hi,

Thanks for all of you. I get the idea Jim. I beleive that is the way I
have to follow. Because i have to face the situations as you explain
their.
Again Thanks for you all.




 
Reply With Quote
 
panther
Guest
Posts: n/a
 
      05-08-2007
Hi,
now i have a new problem.
Here is my codes.

using namespace std;


int main()
{

string number,number1,number2,number3;


cout << "Please enter your National ID Number :";
cin >> number;


while (number != "" ){

if (number.length() != 9)
{
cout <<"Input must be 9 digits. Try again.\n ";
break;
}

// if (! isdigit(number) )
// {
// cout <<" Only numbers 0-9 are allowed. Try again\n";
// break;
// }



else
{

number1 = number.substr(0,2);
number2 = number.substr(2,3);
number3 = number.substr(5,4);


int i = atoi(number1.c_str());
int j = atoi(number2.c_str());
int k = atoi(number3.c_str());
cout <<i<<endl;
cout <<j<<endl;
cout <<k<<endl;
break;
}
}

return 0;

}

The problem is isdigit() not work with the string. It for the
character. So how do i check the contain of the string?
Please help me.

 
Reply With Quote
 
Victor Bazarov
Guest
Posts: n/a
 
      05-08-2007
panther wrote:
> Hi,
> now i have a new problem.
> Here is my codes.
>
> [..]
> The problem is isdigit() not work with the string. It for the
> character. So how do i check the contain of the string?


Two ways. One is to enumerate all characters and call 'isdigit' for
each of them. The other is to try to convert the string into some
large enough number. If it succeeds, you got numbers only.

V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
How to use read() system call to read an 32bit integer Yin Zhu C Programming 15 09-12-2007 10:17 AM
CType(x,Integer) vs. Integer.Parse(x) =?Utf-8?B?Sm9l?= ASP .Net 7 02-07-2006 02:30 AM
How do I add an Integer to another Integer? Sebastian Stelzer Java 2 10-15-2004 01:17 PM
No Math.min(Integer, Integer)? =?ISO-8859-1?Q?Thomas_Gagn=E9?= Java 0 07-29-2003 07:46 PM



Advertisments