Задача по C
От: Лис Израиль  
Дата: 27.01.10 14:16
Оценка:
Помогите решить что добавить в функцию, я уже извертелся...

Задача.
Функция получает строку и указатель на переменную. Возврат функции это число которое должно получиться, а в переменной должна быть длина строки.
Алгоритм рекурсивный.

Примеры:
Получает --> Возвращает
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;
}
c задача
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.