Can you append digits to a variable in c++ or python

In summary, we discussed different ways to create a loop that adds a digit to a variable each time it runs. These methods included using a char array or string in C++, and using multiplication and addition in Python. We also mentioned the need for arbitrary precision arithmetic libraries for larger numbers.
  • #1
OrbitalPower
Say you have a variable x, that is of type int.

x = 1;

I just want to create a while or for loop so that each time it runs it adds another digit to it, such as:

12
123
1234

or 1, 11, 111, 1111, and so on.
 
Technology news on Phys.org
  • #2
I know you can do this:

char y;
y = '1';

char test[2];

test[0] = y;
test[1] = y;
test[2] = '\0';

But I wouldn't know how to get it back to int in C++
 
  • #3
Code:
int num=1;
for (int i=2; i<len; ++i)
{
   num*=10;
   num+=i;
}

Obviously though, you'd have to watch out for integer overflow.

You could also go with the string method, and if you don't need to actually perform operations on the number then it would work fine and you wouldn't have to worry about overflow. I'd use std::string instead of a char array, though.
 
  • #4
Also, since you might need to convert a string to an integer or visa versa at some point:
Code:
#include <sstream>

int str_to_int(std::string str)
{
  int num=0;
  std::istringstream is(str);
  is>>num;
  return num;
}

std::string int_to_str(int num)
{
  std::ostringstream os;
  os<<num;
  return os.str();
}

These can be easily modified for use with other numeric types as well (for all the types std::*stringstream objects can handle anyways) You could even write a generic template function if you felt like it.
 
  • #5
OrbitalPower said:
Say you have a variable x, that is of type int.

x = 1;

I just want to create a while or for loop so that each time it runs it adds another digit to it, such as:

12
123
1234

or 1, 11, 111, 1111, and so on.

To append at the low end, multiply by 10 and add [digit].
To append at the high end, add [digit] * 10 ^ floor(log_10(n)).

You can compute the log relatively quickly using shifts and a constant for 1/log_2(10).
 
  • #6
Yes, thank you both JaWiB and Strilanc. I guess to do the 1111+ I'd so something like:

Code:
	int x;
	x = 1;
	
   int num=1;
for (int i=2; i<8; i++)
{
   num = num * 10;
   num = num + 1;
   
}


I guess I was so busy thinking about trying to convert between types I didn't think of the simple arithmetic solution.

I also like the append at the high end method.
 
  • #7
I don't know how big you want your numbers, but if you want them really big you will need to download an arbitrary precision arithmetic library. There are a bunch available for C++, but I don't know about Python.
 
  • #8
In Python, the above would become:
Code:
maxappends = 8   # actually its max appends -2
num = 1
for i in range(2,maxappends):
  num = num*10 + 1
You get the added benefit of arbitrary length integers: maxappends could be 1001 or more.

To add digits to the LHS (only makes sense if the digits are different, and if you are not prepending a zero):
Code:
maxappends = 20; num = 0
for i in range(maxappends):
  num = num + ((i % 9) + 1) * 10**(i)
  print i,num

- Have fun, Paddy :smile:
 
  • #9
paddy3118 said:
In Python, the above would become:
Code:
maxappends = 8   # actually its max appends -2
num = 1
for i in range(2,maxappends):
  num = num*10 + 1
You get the added benefit of arbitrary length integers: maxappends could be 1001 or more.

This is built in natively? What I was doing was constructing a program that return the remainder in a number composed entirely of ones with 50 or so digits. The idea was to determine the remainder by using the divisor only a few times into the dividend, as it was also composed entirely of ones. Obviously, to do that in C++ I'd perhaps need one of those libraries needed above. So, basically I just tested my method with smaller numbers.

*Also fixed an error I made, should be:

char test[3];

test[0] = y;
test[1] = y;
test[2] = '\0';

and not char test[2].
 

1. Can you append digits to a variable in C++ or Python?

Yes, you can append digits to a variable in both C++ and Python. This is known as concatenation in both languages.

2. How do you append digits to a variable in C++?

To append digits to a variable in C++, you can use the "+" operator to concatenate the digits with the variable. For example, if your variable is named "num" and you want to append the digits "123", you would write "num + 123".

3. How do you append digits to a variable in Python?

In Python, you can use the "+" operator to concatenate strings with a variable. So if your variable is named "num" and you want to append the digits "123", you would write "num + '123'".

4. Can you append digits to variables of different data types in C++ or Python?

In C++, you can only concatenate variables of the same data type. In Python, you can concatenate variables of different data types, but you may need to convert them to strings first using the "str()" function.

5. Is appending digits to a variable the same as adding numbers to a variable?

No, appending digits to a variable is not the same as adding numbers to a variable. Appending digits is a form of string concatenation, while adding numbers is a mathematical operation. In C++, you would use the "<<" operator for adding numbers to a variable, while in Python you would use the "+" operator.

Similar threads

  • Programming and Computer Science
Replies
5
Views
1K
  • Programming and Computer Science
2
Replies
55
Views
4K
  • Programming and Computer Science
Replies
7
Views
471
  • Programming and Computer Science
Replies
5
Views
993
  • Programming and Computer Science
Replies
13
Views
3K
  • Programming and Computer Science
Replies
16
Views
1K
  • Programming and Computer Science
Replies
3
Views
316
  • Programming and Computer Science
Replies
2
Views
895
  • Programming and Computer Science
Replies
8
Views
1K
  • Programming and Computer Science
Replies
9
Views
2K
Back
Top