Звучит она следующим образом: вывести на экран из введенного текста только те символы, которые встречаются в тексте один раз. Вроде задача не очень сложная, но я недогоняю. Пожалуйста, помогите, мне она уже нужна на завтра! Вот что у меня получилось пока:
Код
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, то выводить на экран. Вот такие вот соображения(может быть весь глупые). Если что не понятно, то спрашивайте сразу. Мне уже завтра нужно нести решение, поэтому некогда тянуть время. Всем заранее спасибо за помощь!