D diller

Greenhorn

Posts: 29

posted 8 years ago

Hey -

I am trying to write a program that takes an input of a file formatted as such:

The problem is that these numbers are far too large to use an int, probably even a float once you get down to many operations including powers. So I would like to use an array of bytes in order to calculate the number correctly.

My problem is that I have absolutely no idea where to start. Can anybody give me any pointers?

I am trying to write a program that takes an input of a file formatted as such:

etc, where after number1 there is a sequence of number -- operator. Then the math for doing it should be number 1 (operator 1) number 2 = new numbernumber1

number2

operator1

number3

operator2

The problem is that these numbers are far too large to use an int, probably even a float once you get down to many operations including powers. So I would like to use an array of bytes in order to calculate the number correctly.

My problem is that I have absolutely no idea where to start. Can anybody give me any pointers?

D diller

Greenhorn

Posts: 29

Campbell Ritchie

Sheriff

Posts: 53774

128

posted 8 years ago

Obviously you are supposed to think through the algorithms you are using.

Try an int[] where each member of the array represents a decimal digit, and maybe a boolean flag for positive and negative. You can go through from right to left adding numbers at different positions and use the / and % operators to obtain the result and the carry. That's adding. Then work out how to do subtracting multiplying and dividing.

Powers are much more difficult; unless they are whole numbers, they use logs and cannot be readily implemented by this method. The quickest way to implement powers is probably to use a recursive method. It isn't difficult, but I can't remember just at the moment how to do it.

Try an int[] where each member of the array represents a decimal digit, and maybe a boolean flag for positive and negative. You can go through from right to left adding numbers at different positions and use the / and % operators to obtain the result and the carry. That's adding. Then work out how to do subtracting multiplying and dividing.

Powers are much more difficult; unless they are whole numbers, they use logs and cannot be readily implemented by this method. The quickest way to implement powers is probably to use a recursive method. It isn't difficult, but I can't remember just at the moment how to do it.

D diller

Greenhorn

Posts: 29

Garrett Rowe

Ranch Hand

Posts: 1296

posted 8 years ago

You might be able to get some ideas from the Arbitrary-precision arithmetic wiki article

Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them. - Laurence J. Peter

Consider Paul's rocket mass heater. |