Re: Задача по C
От: Yuki-no Tenshi Украина  
Дата: 27.01.10 20:37
Оценка: 3 (1)
Мой вариант.


int calc( char* s, int* len )
{
    if( *s == '(' )
    {
        // We're in the beginning of a complex expression
        int left_len, right_len, left_val, right_val;
        left_val = calc( s+1, &left_len );
        char op = s[ left_len + 1 ];
        right_val = calc( s+left_len+2,&right_len );
        *len = (left_len+right_len+1+1+1);
        if( op == '+' )
            return left_val + right_val;
        else if( op == '-' ) 
            return left_val - right_val;
    }
    else
    {
        // We're on a simple, one-digit number
        *len = 1;
        return *s - 48;
    }
}
//Пример main
int main()
{
    int len;
    printf( "%d", calc( "((2+3)-(1+(4+(7-(4+1)))))", &len ) );
    printf( "%d", len );
    return 0;
}


А вот изменения в WinMerge.




P.S. Извините, если у кого рисунок съел много траффика. Увы, на РСДН нету раскрывающихся блоков для сообщений.
雪の天使
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.