Задание 8 Урок 22 (вопрос по итерации выражения)
Primary tabs
Напишите функцию, которая получает на вход произвольную строку вида:
5*(3+4)-7*9+3*(2+(2-7))(арифметическое выражение со скобками любого уровня вложенности и операциями умножения, вычитания и сложения)
и в качестве ответа возвращает результат этого выражения.
Рекомендация: сначала убедитесь, что число открывающих скобок, равно числу закрывающих.
Примечание: алгоритмически похожая задача использовалась на собеседовании стажеров в DataArt.
var
S :string;
N :integer ;
function recurseStringHandle(s: string; i: integer): string;
begin
if (i = length(s)) then
begin
result := s[i]
end
else
begin
result := s[i] + recurseStringHandle(s, i+1);
end;
end;
begin
//writeln('Vvedite virajenie');
//readln(S);
S := '5*(3+4)-7*9+3*(2+(2-7))';
N := 1;
writeln('resultat raven: ');
writeln(recurseStringHandle(S, N));
readln();
end.
консоль:
resultat raven: 5*(3+4)-7*9+3*(2+(2-7))
- Log in to post comments
- 1068 reads
vedro-compota
Fri, 01/05/2024 - 18:56
Permalink
как рекурсивное чтение и
как рекурсивное чтение и конкатенация строки работает, можно двигаться дальше, ближе к решению)
_____________
матфак вгу и остальная классика =)