Множества: анализатор формул (С Delphi на C#)
Формулировка задачи:
В Delphi имеется возможность создания множества типа char и проверить входят ли элементы множества в строку:
Как создать такое в C#?
procedure TParser.Preparation(var s: String; variables: TVar);
const
operators: set of AnsiChar = ['+','-','*', '/', '^'];
var
i: Integer;
figures: set of AnsiChar;
begin
figures := ['0', '1','2','3','4','5','6','7','8','9', DecimalSeparator] + variables;
i := 1;
repeat
if CharInSet(s[i], figures) then
begin
insert('#', s, i);
i := i + 2;
while CharInSet(s[i], figures) do
i := i + 1;
insert('#', s, i);
i := i + 1;
end;
i := i + 1;
until
i > Length(s);P.S. Нужно переписать анализатор формул на C
#.Решение задачи: «Множества: анализатор формул (С Delphi на C#)»
textual
Листинг программы
public string Preparation(string str, char variables)
{
var operators = new HashSet<char> { '+', '-', '*', '/', '^' };
var digits = new HashSet<char> { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
digits.Add(variables);
int i = 0;
while (i < str.Length)
{
if (digits.Contains(str[i]))
{
str.Insert(i, "#");
i += 2;
while (digits.Contains(str[i]))
i++;
str.Insert(i, "#");
i++;
}
i++;
}
return str;
}