Write a program that will multiply arbitrarily large real numbers (stored in the chain). Numbers can be positive or negative and the program will accept a comma as decimal point.
Example output:
15321548949451231684.12654894856 x 15,658,213,548,949.5684516 =239908085351191302633721198032836,254474415727249 696
Classic calculator Is not problem for me, but this program is too hard for me.
So anyone who know how I can do this please help. Thank you
|
Mentor
|
![]() |
| 13May2011,11:14 | #2 |
|
Store numbers as strings, then implement the maths algorithms you used to do long addition et al when you were 10 to solve them. Here's a simple example of addition and you can work out the rest (e.g. use C++ string objects instead of static buffers):
Code:
char num1[5], num2[5], result[5];
strcpy(num1,"0123");
strcpy(num2,"0456");
int carry=result[4]=0;
for (int i=3; i>=0; i--)
{
int res=num1[i]-'0' + num2[i]-'0' + carry;
if (res>9)
{
res-=10;
carry=1;
}
else
{
carry=0;
}
result[i]=res+'0';
}
printf("%s+%s=%s\n",num1,num2,result);
If you can't figure it out then do a few examples on paper to remind yourself how it was done, then do a few more while you figure out the algorithm, then you can implement that algorithm. |
|
Light Poster
|
|
| 13May2011,14:47 | #3 |
|
Thank you so much !!!
|
|
Light Poster
|
|
| 14May2011,14:33 | #4 |
|
but I have another question. how I can transform classic number to string ??
|
|
Go4Expert Member
|
|
| 17May2011,10:55 | #5 |
|
U can use sprintf().
|

