Задача на множества в паскале.
Условие задачи:
Дан текс из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст не менее двух раз; все буквы, входящие в текст по одному разу.
Задача должна быть выполнена с помощью множеств в паскале.
Помогите пожалуйства. Заранее благодарю.
эта прога как раз по тебе
uses crt;
var
a,metn0,metn,el:string; l,i,cem,k,n:integer;
begin
writeln('vvedi tekst:'); readln(metn0);
el:='abcdefghijklmnopqrstuvwxyz';
n:=length(metn0);
k:=length(el);
for i:=1 to k do begin
cem:=0;
metn:=metn0;
a:=copy(el,i,1);
repeat
l:=0;
l:=pos(a,metn);
if l>0 then begin
cem:=cem+1;
metn:=copy(metn,l+1,n-l); end
else
until l=0;
write(' ',a,'-',cem);
end;
readln;
end.
Bard ,
А как с условием?Задача по-моему на множества!
извиняюсь(я не заметил ) за неполадки моя прога без множеств...
надо найти более простое алго
спс за помощь
Так пойдет ?
var
s: String;
checked: Set of Char;
i: Byte;
begin
readln(s);
checked := [];
for i := 1 to Length(s) do
if not(s[i] in checked) then begin
include(checked, s[i]);
if pos(s[i], copy(s, i + 1, 255)) > 0 then
writeln('"' + s[i] + '"' + ' >= 2') else
writeln('"' + s[i] + '"' + ' = 1');
end;
end.
var
s: String;
All,Once,MoreThenOnce: Set of Char;
i: Byte;
c: char;
begin
readln(s);
Once:=[];
MoreThenOnce:=[];
for i := 1 to Length(s) do
if s[i] in All then Include(MoreThenOnce,s[i]) else Include(All, s[i]);
Once:=All-MoreThenOnce;
Write('Один раз входят: ');
for c:='a' to 'z' do if c in Once then Write©;
WriteLn;
Write('Более одного раза входят: ');
for c:='a' to 'z' do if c in MoreThenOnce then Write©;
WriteLn;
ReadLn
end.
а что если длина текста болше 255... что тогда?
Тогда надо уточнять у автора, в каком виде ему
Пацаны! Благодарствую Вам!
Выручили меня!