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

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

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

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


Новичок
*

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

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


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

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

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

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


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

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


эта прога как раз по тебе 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.



--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.04.2007 20:53
Сообщение #3


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

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

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


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Артемий
сообщение 25.04.2007 20:54
Сообщение #4


Помощник капитана
****

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

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


А как с условием?Задача по-моему на множества!


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bard
сообщение 25.04.2007 21:05
Сообщение #5


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

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


извиняюсь(я не заметил mega_chok.gif ) за неполадки моя прога без множеств...
надо найти более простое алго lol.gif

спс за помощь blum.gif


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.04.2007 21:09
Сообщение #6


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
Сообщение #7


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

Группа: Модераторы
Сообщений: 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(c);
  WriteLn;
  Write('Более одного раза входят: ');
  for c:='a' to 'z' do if c in MoreThenOnce then Write(c);
  WriteLn;
  ReadLn
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Bard
сообщение 26.04.2007 12:45
Сообщение #8


Учиться, учиться еще раз учиться
***

Группа: Пользователи
Сообщений: 158
Пол: Мужской
Реальное имя: Яшар

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


а что если длина текста болше 255... что тогда?


--------------------
Чтобы поразить цель важна не точность, а смелость
Шарль Луи Монтескё
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.04.2007 12:55
Сообщение #9


Гость






Тогда надо уточнять у автора, в каком виде ему
Цитата
Дан текс из строчных латинских букв
 К началу страницы 
+ Ответить 
matic
сообщение 26.04.2007 18:16
Сообщение #10


Новичок
*

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

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


Пацаны! Благодарствую Вам!
Выручили меня!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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