Bigint Mulitplication

Here I've got a bigint calculator that uses a safearray class(not shown) to store large numbers and do arithmetic operations on them. I've got add and subtract working but when I try multiplication it compiles and runs but nothing happens. Could someone help me fix this? Thanks


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
int size = 100;

class bigint
{
    SafeArray<int> *arr;
public:
    char sign;
bigint()                                                   //initializes to zero
    {
        arr = new SafeArray<int>;
        for(int i =0;i < size; i++)
            arr->set(i,0);
    }
    
void print()                                               //prints numbers without zeroes in front
    {
        bool start_num=false;
        for(int i = 0;i <arr->get_size() ;i++)
        {
            if(arr->get(i)!=0 && start_num==false )
            {start_num=true;
                cout << arr->get(i);}
         else if(start_num==true)
             cout<<arr->get(i);
            
        }
        
       cout<<endl;
    }
    
void assign(const bigint &A)                             //
    {
        for(int i=0;i<arr->get_size();i++)
        {                                                            //Ways to initialize stuff
            arr->set(i,A.arr->get(i));
        }
    
    }
    
void assign(int num)                                     //
    {
        for(int i = arr->get_size()- 1; i >= 0; i--)
        {
            arr->set(i,num%10);
            num /=10;
        }
       
        
    }
    
void assign(string num)                                  //
    {
        long len = num.length();
        int j=arr->get_size()-1;
        for(long i=len-1;i>=0;i--)
        {
            arr->set(j,num[i]-48);
            j--;
        }
    }
   
void add_pos(const bigint &A)                                //add big ints
    {
        int carry=0;
        for(int i=size-1;i>=0;i--)
           {
               int result = arr->get(i)+A.arr->get(i)+carry;
               arr->set(i,result%10);
               carry=result/10;
           }
    }
    
    void  multiply(bigint &A)
    {
        bigint temp;
       
        
        for(int i=0;i<size;i +=1)
        {
            temp.arr->set(i,arr->get(i));
            arr->set(i,0);
        }
        int i1, i2;
        for(i2=0; i2<size; i2++)
        {
            int borrow =0;
            for(i1=0;i1+i2<size;i1++)
            {
                int total=temp.arr->get(i1)*A.arr->get(i2);
                int totalsum=total+arr->get(i1+i2)+borrow;
                arr->set(i1+i2,totalsum%10);
                borrow = totalsum/10;
            }
        }
        

};
int main()

{


    bigint a, b, c;
    a.assign("2543281");
    b.assign("3434");
    a.mulitply(b);
    a.print();
return 0;
}


      


Last edited on
Topic archived. No new replies allowed.