![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
matic |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задача на множества в паскале.
Условие задачи: Дан текс из строчных латинских букв, за которыми следует точка. Напечатать все буквы, входящие в текст не менее двух раз; все буквы, входящие в текст по одному разу. Задача должна быть выполнена с помощью множеств в паскале. Помогите пожалуйства. Заранее благодарю. |
Bard |
![]() ![]()
Сообщение
#2
|
![]() Учиться, учиться еще раз учиться ![]() ![]() ![]() Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
эта прога как раз по тебе
![]()
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 |
![]()
Сообщение
#3
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Bard ,
Цитата Задача должна быть выполнена с помощью множеств в паскале. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Артемий |
![]()
Сообщение
#4
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
А как с условием?Задача по-моему на множества!
-------------------- Dum spiro spero!
|
Bard |
![]()
Сообщение
#5
|
![]() Учиться, учиться еще раз учиться ![]() ![]() ![]() Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
извиняюсь(я не заметил
![]() надо найти более простое алго ![]() спс за помощь ![]() -------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Так пойдет ?
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.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Lapp |
![]()
Сообщение
#7
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Так пойдет ? Мне кажется, если уж такое условие, лучше использовать только множества - то есть не использовать дополнительный поиск, типа 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(c);
WriteLn;
Write('Более одного раза входят: ');
for c:='a' to 'z' do if c in MoreThenOnce then Write(c);
WriteLn;
ReadLn
end.
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Bard |
![]()
Сообщение
#8
|
![]() Учиться, учиться еще раз учиться ![]() ![]() ![]() Группа: Пользователи Сообщений: 158 Пол: Мужской Реальное имя: Яшар Репутация: ![]() ![]() ![]() |
а что если длина текста болше 255... что тогда?
-------------------- Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Тогда надо уточнять у автора, в каком виде ему
Цитата Дан текс из строчных латинских букв |
matic |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: ![]() ![]() ![]() |
Пацаны! Благодарствую Вам!
Выручили меня! |
![]() ![]() |
![]() |
Текстовая версия | 23.07.2025 5:53 |