Звучит она следующим образом: вывести на экран из введенного текста только те символы, которые встречаются в тексте один раз. Вроде задача не очень сложная, но я недогоняю. Пожалуйста, помогите, мне она уже нужна на завтра! Вот что у меня получилось пока:
Код
Program Lab3;
Uses Crt;
const
ni=255;
var
simb_freq: array [1..ni] of integer;
i: byte;
ascode,longtxt: integer;
txt_val:string;
begin
clrscr;
writeln('Vvedite, pojaluista, text: ');
writeln;
readln(txt_val);
{writeln(length(txt_val));}
i:=0;
simb_freq[i]:=0;
repeat
simb_freq[i]:=i;
i:=i+1;
until ni<=i;
longtxt:=length(txt_val);
for i:=0 to longtxt do
begin
ascode:=ord(txt_val[i]);
writeln(ascode:2);
simb_freq[ascode]:=simb_freq[ascode]+1;
{writeln(simb_freq[ascode]);}
end;
i:=0;
repeat
if simb_freq[i]=1 then
writeln(chr(i));
i:=i+1;
until ni<=i;
readln;
end.
ascode - хранение ASCII-кода текущего элемента строки,
longtxt - длина текста,
txt_val - сам текст,
Последний цикл тут совсем не нужен. Короче, у меня такие были соображения:
вводим текст, потом получаем ASCII-кода текущего элемента текста, далее:
1 вариант - далее делаем выборку тех символов, которые встречаются более 1 раза и после уже отсортированные заносим в массив с последующим выводом.
2 вариант - получаем Аски-коды всех элементов строки, заносим их в массив, но так, как там будут многие символы прописываться по 2 и более раз, то поставить какой-нибудь счетчик, который бы следил за каждой ячейкой, чтобы после можно было при опросе элементов массива узнать, сколько раз туда прописывался символ и если это количество равно 1, то выводить на экран. Вот такие вот соображения(может быть весь глупые
