Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2011, 16:54   #1
Ykanakataka
 
Регистрация: 27.08.2011
Сообщений: 9
Сообщение Динамические строки. проблема находа количества буквосочетания.

Всем привет! суть задачи -
сформировать строку вывести его на печать(или просто на екран, (не четко поставлена задача) ) и пощитать сколько раз в эту строку входит буквосочетание ED или ed.
собственно проблема в том что не могу понять как задать поиск буквосочетания...
вот такой наглый способ не помогает))) -
Код:
  if vlan^.elem = a
    and vlan^.next = d
    or vlan^.elem = b
    and vlan^.next = c
наперед большое спасибо за помощь!
Код:
program kr1;
const
a ='E';
d='D';
b='e';
c='d';
TYPE zv=^pointer;
 pointer = record
         elem:char;
         next: zv
 end;
VAR
vlan, vslov :zv;
sym:char;
k:integer;
begin
writeln('Vvedi simvolu do krapki');
read(sym);
new(vslov);
vslov^.elem:=sym;
vslov^.next:=nil;
vlan:=vslov;
repeat
   read(sym);
   new(vlan^.next);
   vlan :=vlan^.next;
   vlan^.elem:=sym;
   vlan^.next :=nil
until sym ='.';
vlan :=vslov;
while vlan^.next <> nil do
  begin
    if vlan^.elem = a
    and vlan^.next = d
    or vlan^.elem = b
    and vlan^.next = c
    then k:=k+1;
    vlan:=vlan^next
   end;
 writeln;
 vlan:=vslov;
 while vlan^.next <> nil do
  begin
    write (vlan^.elem);
    vlan:=vlan^.next;
  end;
  writeln;
  writeln('Slovosochetanije ED ili ed vxodut v stroky ',k,'raz');
  readln;
  readln;
  ens.

вот в чем была проблема -
Код:
if (vlan^.elem = a)
 and (vlan^.next^.elem = d)
 or (vlan^.elem = b)
 and (vlan^.next^.elem = c)

Последний раз редактировалось Ykanakataka; 29.08.2011 в 23:10.
Ykanakataka вне форума Ответить с цитированием
Старый 29.08.2011, 18:00   #2
Ykanakataka
 
Регистрация: 27.08.2011
Сообщений: 9
По умолчанию

вопрос - а можно здесь использовать динамический масив для поиска? или это только в обжект паскаль? и если да то как?

Последний раз редактировалось Ykanakataka; 29.08.2011 в 18:19.
Ykanakataka вне форума Ответить с цитированием
Старый 29.08.2011, 20:43   #3
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

что это за ужас?
Код:
var s:string;
i:integer;
count:integer;
begin
read(s);
for i:=1 to length(s) do if (copy(s,i,2)='ed') or (copy(s,i,2)='ED') then count:=count+1;
writeln(count);
end.
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 29.08.2011, 20:48   #4
Ykanakataka
 
Регистрация: 27.08.2011
Сообщений: 9
Радость ех...

нужен динамический список... если б статика была то уже давно б написал и не маялся фигней)
Ykanakataka вне форума Ответить с цитированием
Старый 29.08.2011, 20:50   #5
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

строка по сути это тоже динамический массив. не совсем понимаю что конкретно нужно. но думаю это можно сделать намного проще
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 29.08.2011, 20:53   #6
Ykanakataka
 
Регистрация: 27.08.2011
Сообщений: 9
Печаль

не совсем, здесь кагбе два пункта висят - тоесть
vlan^.elem:=sym; - несет в себе инфу об елементе
и
vlan^.next :=nil
никакой инфы не несет кроме указателя на следующий елемент\символ... обьеденить можна както в обжекте, но не знаю можна ли в турбо... вот и вся загвохдка зделать так что б он искал две буквы... как найти одну знаю, как зделать так что б искал вслде за ней еще одну не знаю(
Ykanakataka вне форума Ответить с цитированием
Старый 29.08.2011, 21:00   #7
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

опять ни хрена не понял но допустим есть строка s и в ней надо что то найти. можно сделать вот так
if ((s[i]='E') and (s[i+1]='D')) or ((s[i]='e') and (s[i+1]='d'))

Цитата:
никакой инфы не несет кроме указателя на следующий елемент\символ... обьеденить можна както в обжекте,
тип данных можно создать
type myType=record
и тут перечесление всех полей какие нужны
a:string;
b:integer;
c:boolean;
и так далее
end;
а потом обьявляем переменную этого типа и юзаем
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 29.08.2011, 21:11   #8
Ykanakataka
 
Регистрация: 27.08.2011
Сообщений: 9
По умолчанию

не ловлю суть. насколько я понимаю ты предлагаешь использовать масив так? но в таком случае нужно задать масиву длинну... или яя чтото путаю?
Ykanakataka вне форума Ответить с цитированием
Старый 29.08.2011, 21:48   #9
Лубышев
Участник клуба
 
Аватар для Лубышев
 
Регистрация: 23.07.2007
Сообщений: 1,054
По умолчанию

я тоже тебя не совсем понимаю. в общем смотри строка это тот же самый массив каждый элемент которого это char то есть символ. ты можешь напрямую обращаться к любому символу строки то есть: s[i] где s-строка i-номер элемента. можно узнать длинну строки length(s) можно увеличить размер массива
например s:=s+'трололо'
то есть ты можешь делать все что хочешь
Писано по д'Эльфийски
Лубышев вне форума Ответить с цитированием
Старый 29.08.2011, 22:02   #10
Ykanakataka
 
Регистрация: 27.08.2011
Сообщений: 9
По умолчанию

не получается... можешь толком куски кода написать?
а то у меня бошка вообше не варит уже(
Ykanakataka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi 7; Динамические переменные + вектор + строки. iReqyz Помощь студентам 2 29.03.2011 11:21
Проблема с форматом времени (подсчет количества часов) Zalim Microsoft Office Excel 1 15.12.2010 09:21
Поиск буквосочетания в строке iskurt Общие вопросы C/C++ 3 14.06.2010 00:02
Проблема большого количества форм... Mr.Qwerty Общие вопросы Delphi 2 16.07.2009 16:53
динамические строки SeregaPIF Общие вопросы C/C++ 1 19.11.2007 08:20