Показать сообщение отдельно
  #8  
Старый 30.03.2009, 18:58
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Цитата:
Сообщение от 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);
Ответить с цитированием