Цитата:
Сообщение от BloodFooria
У меня сейчас такая же проблемка...
Вообщем, дан String, записанный по шаблону xQy, где x, y - любое число, а Q - один из знаков действия (+, -, *, /). Нужно выудить эти числа из String и знак действия. Ну посчитать я сам смогу
Помогите решить, сейчас сидел, ничего не получилось.
|
Вот насочиняла такую функцию. Принимает аргумент в виде строки Expression в формате 'xQy', как вы описали, и разделяет на три строки 'x', 'Q', 'y', где Q — один из знаков ('+', '-', '*', '/').
Код:
procedure ExtractNumbersAndSign(Expression: string);
type
TSigns = set of Char;
var
x, y, Q: string;
i, ExpLen: Integer;
Signs: TSigns;
begin
Signs := ['+', '-', '*', '/'];
i := 1; ExpLen := Length(Expression);
while (not (Expression[i] in Signs) and (i < ExpLen)) do Inc(i);
Q := Expression[i];
x := Copy(Expression, 1, i - 1);
y := Copy(Expression, i + 1, ExpLen - i);
ShowMessage('Q = ' + Q + #13#10'x = ' + x + #13#10'y = ' + y);
end;
В общем, древний-древний Pascal... Почти. =)
P.S. Ой, только сейчас увидела небольшой промах. Теперь исправлено. Раньше было так (не совсем корректно):
Код:
while (not (Expression[i] in Signs) or (i = ExpLen)) do Inc(i);