Go4Expert (http://www.go4expert.com/)
-   C (http://www.go4expert.com/forums/c/)

 Martin0027 12May2011 14:28

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.

 xpi0t0s 13May2011 11:14

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);```
Long division is trickiest so leave that until last. By the time you've done the rest you should be able to handle it. Start with addition, then do subtraction, then multiplication. Start with integer maths and it's up to you when you start adding functionality to handle fixed or floating point.

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.

 Martin0027 13May2011 14:47

Thank you so much !!!

 Martin0027 14May2011 14:33

but I have another question. how I can transform classic number to string ??

 Avenger625 17May2011 10:55

U can use sprintf().

 All times are GMT +5.5. The time now is 00:31.