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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2010, 19:17   #1
Виктория7777
Пользователь
 
Аватар для Виктория7777
 
Регистрация: 02.12.2010
Сообщений: 67
Печаль найти все слова, в которых заданный символ встречается не менее чем заданное число раз. Delphi.

Задача: "Дан текст, найти все слова, в которых заданный пользователем символ встречается не менее чем заданное число раз."
Я сделала чтобы программа искала заданный пользователем символ:
Код:
 var st :string;
      i,j:integer;
  begin
    j:=0;
    st:=memo1.Lines.Text;
    if(length(form1.vvodparametraed.Text)=0 ) then   {проверяем не пустая ли строка}
      begin
        Application.MessageBox('Введите искомый символ','Предупреждение',MB_OK);
        exit;
      end;
     i:=pos(form1.vvodparametraed.Text[1],st);  {определяем позицию искомого сивола}
    while (i>0) do
     begin
       inc(j); {счётчик}
       st:=copy(st,i+1,length(st)-i); {вырезаем строку}
       i:=pos(form1.vvodparametraed.Text[1],st);
      end;
   form2.Label1.Caption:='Колличество искомых сиволов - '+inttostr(j);
   form2.showmodal; 
  end;
никак не поучается вторая часть задачи про заданное число раз... помогите пожалуйста...(

Последний раз редактировалось AlDelta; 16.12.2010 в 21:25.
Виктория7777 вне форума Ответить с цитированием
Старый 16.12.2010, 21:46   #2
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

Ну, как-то так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var st :string;
    i,j :Integer;
    ps1, ps2: Integer;
    s: String;
begin
j:=0;
st:=Memo1.Lines.Text;
if(Length(Edit1.Text) = 0) then {проверяем не пустая ли строка}
begin
    Application.MessageBox('Введите искомый символ','Предупреждение',MB_OK);
    exit;
    end;
ps1:=1;
ps2:=1;
Memo2.Lines.Clear;
while ps1 <= Length(st) do begin
    while st[ps1] = ' ' do Inc(ps1);
    ps2:=ps1 + 1;
    while (st[ps2] <> ' ') and (ps2 <= Length(st)) do Inc(ps2);
    s:=Copy(st, ps1, ps2 - ps1);
    j:=0;
    i:=PosEx(Edit1.Text[1], s, 1);
    while i > 0 do begin
        Inc(j);
        if j = StrToInt(Edit2.Text) then Break;
        i:=PosEx(Edit1.Text[1], s, i + 1);
        end;
    if j = StrToInt(Edit2.Text) then Memo2.Lines.Add(s);
    ps1:=ps2 + 1;
    end;
end;
Комментарии не писал, и так всё понятно
WhiteSpirit вне форума Ответить с цитированием
Старый 17.12.2010, 10:13   #3
Виктория7777
Пользователь
 
Аватар для Виктория7777
 
Регистрация: 02.12.2010
Сообщений: 67
По умолчанию

не работает, выдаёт ошибку в этой строчке:
i:=PosEx(Edit1.Text[1], s, 1)
Виктория7777 вне форума Ответить с цитированием
Старый 17.12.2010, 10:43   #4
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

Надо подключить модуль StrUtils, там эта функция прописана
WhiteSpirit вне форума Ответить с цитированием
Старый 17.12.2010, 13:24   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Надо подключить модуль StrUtils, там эта функция прописана
если только версия Delphi >= 7 :

Цитата:
В Delphi 7 в модуле StrUtils внесены некоторые изменения. Есть новая функция: PosEx....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.12.2010, 15:00   #6
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

Да, точно... в шестой этой функции нет
Ну, автор темы не указала, в какой версии нужно
WhiteSpirit вне форума Ответить с цитированием
Старый 21.12.2010, 18:46   #7
Виктория7777
Пользователь
 
Аватар для Виктория7777
 
Регистрация: 02.12.2010
Сообщений: 67
По умолчанию

7) всё работает) спасибо большое))
Виктория7777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа на Delphi, считающая сколько раз в тексте встречается каждый символ, биграмма, триграмма denis_dneprovski Помощь студентам 17 11.10.2010 06:15
Подсчитать сколько раз заданное слово встречается в сообщении. kri* Помощь студентам 1 28.05.2010 22:29
Как подсчитать сколько раз встречается символ в строке? zver777 Общие вопросы Delphi 10 10.01.2010 00:57
сколько раз заданное слово встречается в данной строке pascal1994 Помощь студентам 4 04.02.2009 08:41
Найти и вывести все слова,у котоpых число гласных букв пpевышает число согласных. Briz Помощь студентам 2 11.05.2008 00:56