2011-10-03 5 views
1

그래서 BigNum 클래스를 구현하여 큰 정수를 처리하고 현재 문자열 생성자 클래스를 수정하려고합니다. 나는 "-345231563567"과 같은 문자열을 역순으로 읽는 배열 (예 : 765365132543)로 읽을 수 있어야합니다. 첨부 된 코드의 첫 번째 부분은 첫 번째 문자가 양수인지 음수인지를 확인하고 양수를 true 또는 false로 설정합니다. 코드의 다음 부분은 번호가 0 인 경우뿐만 아니라 발생할 수있는 숫자의 앞에 오는 0을 확인합니다. 마지막 부분은 배열에 숫자를로드하는 것이므로 어떤 이유로 코드가 작동하지 않습니다. 솔루션에 대한 모든 도움을 주시면 감사하겠습니다.BigNum 클래스 String 생성자 오류

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; 
} 
} 

BigNum.h 여기 http://csel.cs.colorado.edu/%7Eekwhite/CSCI2270Fall2011/hw2/revised/BigNum.h

를 찾을 수 있으며 내가 사용하려고 테스트 파일은 여기에서 찾을 수 있습니다. 테스트에 실패했습니다. http://csel.cs.colorado.edu/%7Eekwhite/CSCI2270Fall2011/hw2/revised/TestBigNum.cxx

+1

무엇이 오류입니까, BTW ?? – liaK

+0

내가 설정 파일을 실행하려고하면 특별히 문자열 생성자를 테스트하는 테스트가 실패합니다. 어떤 이유로 배열에 문자열을 읽지 않습니다. – Sean

+0

저장소에'std :: string '을 사용하지 않는 이유는 무엇입니까? –

답변

0

20으로 정의한 DEFAULT_CAPACITY 바이트를 할당하고 22 자리를 계속 입력하는 것처럼 보입니다.

0

방금 ​​코드를 실행하려고 시도했지만 digit = 행에 문제가있는 것 같습니다. 값과 같게 설정하는 포인터입니다. 너 문제 야?