Re[5]: Сойдет? :-\
От: Dmitry Kukushkin  
Дата: 02.06.03 12:30
Оценка:
Здравствуйте, UgN, Вы писали:

UgN>Типа исходник. Для проверки алгоритма. Особо не напрягался, поэтому мог и накосячить, да и оптимизировать еще можно.

UgN>Но ломает...

char* sum ( char* pszA, char* pszB, int ASign, int BSign, int* pResSign )
{
    int ALen = strlen( pszA ) + 1;
    int BLen = strlen( pszB ) + 1;
    int CLen = max( ALen, BLen ) + 1;
    char* pszC = new char[ CLen ];
    do
    {
        char *pc = pszC + CLen;
        *pc = ( ALen?* ( pszA + --ALen ) : 0 )  + ( BLen ? *( pszB + --BLen ) : 0); 
        *(pc - 1) = *pc/10;
        *pc %= 10;
    } while( --CLen );
    
    *pResSign = ASign^BSign; 
    return pszC;    
}


При всем уважении знак суммы вычисляется не так ( это же не произведение ).
Легче всего еще умножать на знак (-1,1) значения из разных char * — ей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.