Здравствуйте, 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 * — ей.