Помогите решить что добавить в функцию, я уже извертелся...
Задача.
Функция получает строку и указатель на переменную. Возврат функции это число которое должно получиться, а в переменной должна быть длина строки.
Алгоритм рекурсивный.
Примеры:
Получает --> Возвращает
5 --> 5, len=1
(4+9) --> 13, len=5
((7-9)+(6+3)) --> 7, len=13
(4+(7-(4+1))) --> 6, len=13
Пример не правильных строк:
2+5 --> нет скобок
(1+2+3)--> больше чем 2 числа не разделенных скобками
Проверять не правильные строки не надо, то есть предположительно строка передаваемая в функцию верная.
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( ______, &left_len );
char op = s[_________];
right_val = calc( _______, _______ );
*len = _________________;
if( op == '+' )
_____________________;
else if( op == '-' )
_____________________;
}
else
{
// We're on a simple, one-digit number
*len = ______;
return ______;
}
}
//Пример main
int main()
{
int len;
printf( "%d", calc( "((7-9)+(6+3))", &len ) );
printf( "%d", len );
return 0;
}