0

hello everyone i just started my implementation of a bigint class and i got stuck is there a way for me to dynamically allocate the memory so i wouldn't have a fixed number like this num[50] and is there a better way the imrove my display method thank you in advance

#include <iostream>
#include <string>
using namespace std;

class Mint {
public:

    Mint();
    Mint(int);
    Mint (const char* s);
    void display();
private:
    char  num[50];
};



Mint::Mint()
{
    num[0] = 0;
}
Mint::Mint(int n)
{
    int i;
    while(n>0)
    {
        num[i] = n%10;
        n = n/10;
        i++;
    }
}
Mint::Mint(const char* s)
{
        int i = 0 ;
        while(s[i] != '\0')
                {
                    i++;
                }
                i--;
                while(i>=0){
                    num[i] = s[i] - '0';
                    i--;
                }
}
void Mint::display(){
    int i;
    for(i=0;i<=strlen(num);i++)
    {
        cout << char('0'+num[i]);
    }
}

#include "Mint.h"
#include <iostream>
#include <string>
using namespace std;



int main()
{
    Mint x,z;
    Mint a = "0655478461469974272005572";
    Mint b = 12536458;

    a.display();
}
3
Contributors
2
Replies
16
Views
1 Year
Discussion Span
Last Post by rubberman
Featured Replies
  • Using a string as the collection holding the digits will automatically reallocate memory and make the display() function much simpler, while providing you with an indexed collection that you can iterate through. Read More

  • 1

    There are a number of solutions to this problem. You can use a std::vector for the array which will happily resize itself as needed. Much better than "rolling your own", which I have done in the past before the STL was available. For automatically resizable arrays these days I use … Read More

1

Using a string as the collection holding the digits will automatically reallocate memory and make the display() function much simpler, while providing you with an indexed collection that you can iterate through.

Edited by tinstaafl

1

There are a number of solutions to this problem. You can use a std::vector for the array which will happily resize itself as needed. Much better than "rolling your own", which I have done in the past before the STL was available. For automatically resizable arrays these days I use vectors. Simple, and they take care of the care and feeding of the array.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.