2011-10-03 2 views
1

Donc j'implémente une classe BigNum pour gérer les grands entiers et j'essaie actuellement de réparer ma classe de constructeur de chaîne. Je dois être capable de lire des chaînes telles que "-345231563567" dans un tableau avec les numéros lus en arrière (c'est-à-dire 765365132543). La première partie du code joint vérifie le premier caractère pour voir s'il est positif ou négatif et définit positif à vrai ou faux. La partie suivante du code vérifie les zéros en tête du nombre qui peut apparaître ainsi que si le nombre est zéro lui-même. la dernière partie est ce qui charge le nombre dans le tableau et pour une raison quelconque je ne peux pas obtenir le code pour fonctionner. toute aide avec une solution est très appréciée.BigNum Classe String Constructeur Erreur

BigNum::BigNum(const char strin[]) 
{ 
size_t size = strlen(strin); 
positive = true; 
used=0; 
if(strin[0] == '+') 
{ 
    positive = true; 
    used++; 
} 
else if(strin[0] == '-') 
{ 
    positive = false; 
    used++; 
} 
else 
{ 
    positive = true; 
} 

// While loop that trims off the leading zeros 
while (used < size) 
{ 
    if (strin[used] != '0') 
    { 
    break; 
    } 

    used++; 
} 

// For the case of the number having all zeros 
if(used == size) 
{ 
    positive = true; 
    digits = new size_t[1]; 
    capacity = 1; 
    digits[0] = 0; 
    used = 1; 
} 
// Reads in the digits of the number in reverse order 
else 
{ 
    int index = 0; 
    digits = new size_t[DEFAULT_CAPACITY]; 
    capacity = size - used; 


    while(used < size) 
    { 
    digits[index] = strin[size - 1] - '0'; 
    index++; 
    size--; 
    } 
    used = index + 1; 
} 
} 

Le BigNum.h se trouve ici http://csel.cs.colorado.edu/%7Eekwhite/CSCI2270Fall2011/hw2/revised/BigNum.h

et le fichier de test que je suis en train d'utiliser peut être trouvée ici. J'échoue le test 7 http://csel.cs.colorado.edu/%7Eekwhite/CSCI2270Fall2011/hw2/revised/TestBigNum.cxx

+1

Quelle est l'erreur que vous obtenez, BTW ?? – liaK

+0

lorsque j'essaie d'exécuter le fichier set, j'échoue le test 7 qui teste spécifiquement le constructeur de la chaîne. pour une raison quelconque, il ne lit pas la chaîne dans le tableau. – Sean

+0

Une raison pour ne pas utiliser un 'std :: string' pour le stockage? –

Répondre

0

On dirait que vous allouez des octets DEFAULT_CAPACITY que vous avez définis comme 20 et que vous continuez à y mettre 22 chiffres.

0

J'ai juste essayé d'exécuter votre code et il semble y avoir un problème avec la ligne digit =. C'est un pointeur que vous définissez égal à une valeur. Cela pourrait-il être votre problème?

Questions connexes