Другие языки программирования и технологии

Проблема с задачей с паскале, подскажите пожалуйста где неправельно и как ошибку исправить

// 21. Задача на множества. Дан текст. Удалить в нем повторяющиеся символы.
Program kr_1;
var a:string;
T:set of char;
s,i,k:integer;
begin
writeln('ВВедите предложение');
readln(a);
T:=[];
for i:=1 to length(a) do
if a in T then delete(a,i,1) else T:=T+[a];
writeln(a);
end.
В вопросе явно не достаточно данных!
Если нужно удалить все символы, встречающиеся более 1 раза, то вот так:

var Str : String;
S1, S2 : Set of Char;
Ch : Char;
N : Integer;
begin
Write('Введите строку: '); ReadLn(Str);
S1 := []; S2 := []; for N := 1 to Length(Str) do if Str[N] in S1 then S2 := S2 + [Str[N]] else S1 := S1 + [Str[N]];
for Ch := #0 to #255 do if Ch in S2 then while Pos(Ch, Str) > 0 do Delete(Str, Pos(Ch, Str), 1);
WriteLn(Str);
end.

Здесь символы попадают в первое множество, если встречаются 1 раз,
во второе — когда встречаются 2-й раз.

Если переделать твой код (для решения с одним множеством) , то будет примерно вот так:

var Str : String;
S : Set of Char;
N : Integer;
begin
Write('Введите строку: '); ReadLn(Str);
S := []; N := 1;
while N <= Length(Str) do
if Str[N] in S then Delete(Str, N, 1) else begin S := S + [Str[N]]; Inc(N); end;
WriteLn(Str);
end.

Длина строки изменяется, поэтому необходимо использовать цикл while.
J*
Jyrgal* *(Jiku)
94 446
Лучший ответ
ды блин.... смножествами вообще почти ничего нельзя делать.... а ты пытаешься работать с ними как со строками. вот в чем ошибка!!!! множества внутри программы, их нельзя умножить, добавить, вычесть.. . а ты к множеству пытаешься что то прибавить, да еще другого типа данных. . бред