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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2007, 14:32   #1
menlo
Пользователь
 
Регистрация: 03.11.2007
Сообщений: 13
По умолчанию Помогите с задачей, Паскаль

Мне тут задали 5 задач,я 4 сделал ,а вот с последние проблема

Написать вариант функции поиска N-го вхождения подстроки T в строку S с дополнительным параметром, указывающим игнорировать или нет различия в заглавных и прописных буквах.
menlo вне форума Ответить с цитированием
Старый 25.11.2007, 19:21   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Используйте функцию m:=pos(T,S), если T найдена в S (m <> 0), то удаляйте из S m символов delete(S,1,m). Повторяйте алгоритм, пока m не станет равным нулю. Сколько раз отработал данный алгоритм - столько раз подстрока T входит в строку S.
Если нужно игнорировать различие в регистрах букв, то делайте в строках S и T все буквы, например, прописными (AnsiUpperCase(const S: string): string;) и запускайте приведенный алгоритм.
_Dmitry вне форума Ответить с цитированием
Старый 25.11.2007, 19:41   #3
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Цитата:
Используйте функцию m:=pos(T,S), если T найдена в S (m <> 0), то удаляйте из S m символов delete(S,1,m). Повторяйте алгоритм, пока m не станет равным нулю.
недавно сам пропарился на этом, поэтому смотрите пример строки: qqqqqqqqqqwwwwwwwwww, по вашему алгоритму будет найдено 10 вхождений строки qw
zetrix вне форума Ответить с цитированием
Старый 25.11.2007, 19:50   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Не соглашусь. Данная программа дает единичку
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  S,T: string;
  m,n: integer;
begin
  S:='qqqqqqqqqqwwwwwwwwww';
  T:='qw';
  n:=0;
  repeat
    m:=pos(T,S);
    if m <> 0 then
      begin
        delete(S,1,m);
        n:=n+1;
      end;
  until m = 0;
  Edit1.Text:=IntToStr(n);
end;

Последний раз редактировалось _Dmitry; 25.11.2007 в 19:52.
_Dmitry вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста с задачей в Турбо Паскаль. Bulvai Помощь студентам 1 25.06.2008 18:09
Помогите с задачей на С++ Nemisoi Помощь студентам 1 22.04.2008 22:09
Помогите с задачей bel_ka Общие вопросы C/C++ 13 26.12.2007 19:23
помогите с задачей, Паскаль menlo Помощь студентам 2 15.11.2007 18:04
Помоги с задачей плз очень надо.Паскаль menlo Помощь студентам 7 03.11.2007 16:40