I need a way to get a number from the user, break that number up (eg. 1128 into 1 1 2 and 8), and then manipulate each number. Here is what I tried to do, failed horribly:

``````#include <iostream>
#include <string>
#include <cmath>
int main()
{
string str;
int a = 0;

cout << "Number: " << endl;
cin >> str;

for(int i = 0,i2 = 1; i < str.length(); i++, i2++)
{
int x = pow(16.0, i);
int y = str[i2];
cout << y << ", ";
cout << x << ", ";
a += (h_str[h_str.length() -i2]) *x;
cout << a << endl;
}
cout << sum << endl;
}``````

>>int y = str[i2];

str[i2] contains the ascii value of the character, such as '1' is ascii value 49. See this ascii chart for all of them. To convert it to decimal just subtract '0' `int y = str[i2] - '0';` >>a += (h_str[h_str.length() -i2]) *x;
I have no idea what that is supposed to do. where is h_str declared ?

i was changing it to make sense here, in my program they're all h_str instead of just str.

Thanks for your help going to try it out now

Why all this? You wanted to input a number from the user and manipulate each digit.

But what do you want to do with the digits????
Because I know a way to get each digit separately.

Suppose you input the number as 12.Then you can seperate them by

``````#include<iostream.h>

int main()
{
int i,r,num;
cout<<"Enter number: ";
cin>>num;

while(i>0)
{
r = num% 10;
i = num/10;
}

}``````

r = num % 10;
Suppose you input 12, 'r' gets the value 2. Then when the loop runs the second time 'r' gets 1. Then the loop stops. I think this is a better way.

now you just have to create a character or integer array to store every separate digit...

These kinds of problems are all basically the same... they involve integer division and modulo operations..

In other words 1128 / 10 = 112, and 1128 % 10 = 8. 112 / 10 = 2, etc..
You can see where I'm going with this yeah?

A nice twist on this problem is the famous "reverse digits" problem.. there are many ways to do it, but it's basically all the same.

if n=1128(int type)
use this-

``````while(n>0)
{
digit=n%10;    //extract individual digit to use
cout<<digit<<endl   //or do any operation on it
n=n/10;   //reducing the n by 10 so that it finally turns to    (0.something)
}``````

I hope it works:)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.