Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
matic
Задача на множества в паскале.
Условие задачи:

Дан текс из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст не менее двух раз; все буквы, входящие в текст по одному разу.

Задача должна быть выполнена с помощью множеств в паскале.

Помогите пожалуйства. Заранее благодарю.
Bard
эта прога как раз по тебе good.gif

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.

klem4
Bard ,
Цитата
Задача должна быть выполнена с помощью множеств в паскале.
Артемий
А как с условием?Задача по-моему на множества!
Bard
извиняюсь(я не заметил mega_chok.gif ) за неполадки моя прога без множеств...
надо найти более простое алго lol.gif

спс за помощь blum.gif
klem4
Так пойдет ?

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.
Lapp
Цитата(klem4 @ 25.04.2007 22:09) *

Так пойдет ?

Мне кажется, если уж такое условие, лучше использовать только множества - то есть не использовать дополнительный поиск, типа Pos. Вот так (klem4, я использовал твой код для основы) :
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.
Bard
а что если длина текста болше 255... что тогда?
volvo
Тогда надо уточнять у автора, в каком виде ему
Цитата
Дан текс из строчных латинских букв
matic
Пацаны! Благодарствую Вам!
Выручили меня!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.