IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача, Дан текст из строчных латинских букв...
matic
сообщение 25.04.2007 16:58
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  -1  +


Задача на множества в паскале.
Условие задачи:

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

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

Помогите пожалуйства. Заранее благодарю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 25.04.2007 21:09
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Так пойдет ?

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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 26.04.2007 3:38
Сообщение #3


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(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.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 16:32
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"