Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

поиск элемента в строке

431
19 декабря 2006 года
sherry
207 / / 16.10.2006
Подскажите, плз, как найти в строке 2 одинаковых символа...
431
19 декабря 2006 года
sherry
207 / / 16.10.2006
Всё гениальное просто! Я понял!!!

var s:string;
i,j,kol:integer;
mn:set of char;
begin
read(s);
mn:=[];
for i:=1 to length(s) do
begin
kol:=0;
for j:=1 to length(s) do
begin
if s=s[j] then inc(kol);
end;
if (kol>=2) and not (s in mn) then
begin
write(s);
mn:=mn+[s];
end;
end;
write('*');
readln;
end.
242
19 декабря 2006 года
Оlga
2.2K / / 04.02.2006
так помоему проще
 
Код:
if s=s[j] анд i <> j then


вместо kol можно использовать переменную boolean:
Код:
flag : boolean;
for i:=2 to length(s) do
begin
 flag := false;
 for j:=i-1 to 1 do
   if s=s[j] then begin
    flag := true;
    break;
   end;
 if flag = true then
 begin
  write(s);
  mn:=mn+[s];
 end;
end;

немного изменила код, может накосячила, т.к. Паскаль незнаю.
а вообще уточни что тебе надо сделать, занести в множество все символы которые в строке появляются больше одного раза?
431
20 декабря 2006 года
sherry
207 / / 16.10.2006
нужно было создать строку, которая содержала бы символы, повторяющиеся в строке1, повторяющиеся более 2-х раз. В принципе - мой алгоритм меня почти устраивает. ПОЧТИ - потому что я не имел дело с множествами, и знаю про них по-наслышке. Если есть другой вариант, без использования множеств - очень хотелось бы его знать...
242
20 декабря 2006 года
Оlga
2.2K / / 04.02.2006
твой вариант не очень оптимален, вот и все. хотя важно что ты са пишешь. насчет других вариантов, можно символы хранить просто в другой строке, и код где ты добавляешь символ к множеству заменить на код добавления символа к строке. помоему в Паскале при работе со строками можно использовать оператор +, просто изначально задать строке значение ''.
622
20 декабря 2006 года
nilbog
507 / / 19.12.2006
Цитата: OlgaKr
твой вариант не очень оптимален, вот и все. хотя важно что ты са пишешь. насчет других вариантов, можно символы хранить просто в другой строке, и код где ты добавляешь символ к множеству заменить на код добавления символа к строке. помоему в Паскале при работе со строками можно использовать оператор +, просто изначально задать строке значение ''.


хм
может в поздних и можно но в том паскале что я изучал нельзя

2sherry
если вам нужно все эл-ы которые по 2 раза встречаются то с множеством лучше всего
а если два одинаковых симв то ищем до первых попавшихся

вот так можно выловить все эл-ы встречающиеся 2 и более раз в тексте
без вложенных циклов но с 2 мн-ами

 
Код:
m1:=[]; m2:=[];
for i:=1 to lenght(s) do
if s in m1 then m2:=m2+[s] else m1:=m1+[s];

если нужно те которые встречаются только 2 раза не более то кажется придется подключить мн-во в которое отправлять при 3 появлении
8.9K
27 декабря 2006 года
Prince Firdavs
34 / / 22.11.2006
<b><u><i>
Цитата: nilbog
хм
может в поздних и можно но в том паскале что я изучал нельзя

2sherry
если вам нужно все эл-ы которые по 2 раза встречаются то с множеством лучше всего
а если два одинаковых симв то ищем до первых попавшихся

вот так можно выловить все эл-ы встречающиеся 2 и более раз в тексте
без вложенных циклов но с 2 мн-ами
 
Код:
m1:=[]; m2:=[];
for i:=1 to lenght(s) do
if s in m1 then m2:=m2+[s] else m1:=m1+[s];

если нужно те которые встречаются только 2 раза не более то кажется придется подключить мн-во в которое отправлять при 3 появлении

</b></i></u>

24K
03 января 2007 года
$nike
3 / / 30.12.2006
Цитата: OlgaKr
...
Код:
flag : boolean;
for i:=2 to length(s) do
begin
 flag := false;
 for j:=i-1 to 1 do
   if s=s[j] then begin
    flag := true;
    break;
   end;
 if flag = true then
 begin
  write(s);
  mn:=mn+[s];
 end;
end;

немного изменила код, может накосячила, т.к. Паскаль незнаю.
а вообще уточни что тебе надо сделать, занести в множество все символы которые в строке появляются больше одного раза?



"Четко"-написанный код, но можно было бы и без прерывания делать...
Вместо прерывания, сразу выводить символ и все...
И кода меньше, и "незнающий" не запутается...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог