Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

кол-во слов начинающихся и заканчивающихся заданным символом [WinXP]


Lipris ©   (2006-11-30 16:43:00) 

как написать программу которая в строке найдет  количество слов начинающихся и заканчивающихся заданным символом.

Текст: "Без знаков припинания текст теряет выразительность"
например Заданный символ "т"

Результат работы программы: Кол-во слов начин. и заканчив на "т" равно 2

слова отделены только пробелами (одним или несколькими)


Elen   (2006-12-01 09:29:00) [1]


> Снимаю в виду замечания:

Ага я вот тоже с сессией так парюсЪЪ что и лишний раз [6] пишу... Крыша хлопает в ладоши... :)


Думкин   (2006-12-01 08:27:00) [2]

Снимаю в виду замечания:

> (Может быть на всякий случай надо будет пробелами строку
> входную дополнить на концах)

Правда, студентам помогать текстом - не надо. Декабрь. Сессия.


Думкин   (2006-12-01 08:20:00) [3]


> Elen ©   (01.12.06 07:57) [7]

А если строка заканчивается на 2 пробела? Или начинается не с пробела? Или...


Elen   (2006-12-01 07:57:00) [4]


> Lipris

Автор извини [6] не учтен заканчивающийся символ :
Вот так правильнее по сабжу :

procedure TForm1.Edit1Change(Sender: TObject);
var s:string; n,i,a:integer;
begin
s:='Без знаков тприпинаният текст теряет выразительность';
i:=1;n:=0;
while i<=length(s) do begin
if s[i]=' ' then  begin a:=i; inc(i);
 while (s[i]<>' ')and(i<length(s)) do inc(i);
 if (s[i-1]=Edit1.Text)and(s[a+1]=Edit1.Text) then inc(n);
end else inc(i);
end;
caption:=inttostr(n);
end;


(Может быть на всякий случай надо будет пробелами строку входную дополнить на концах)


Elen   (2006-12-01 07:46:00) [5]


> Lipris

Могу предложить код пошустрее чем у AndreyRu :

procedure TForm1.Edit1Change(Sender: TObject);
var s:string; n,i:integer;
begin
s:='Без знаков тприпинания текст теряет выразительность';
i:=1;n:=0;
while i<=length(s) do begin
if (i>1)and(s[i-1]=' ')and(copy(s,i,length(edit1.Text))=Edit1.Text) then
 inc(n);
inc(i);
end;
caption:=inttostr(n);
end;


В эдит вводится начало слова (первая буква) в капшине твое решенее.


AndreyRu   (2006-11-30 21:43:00) [6]

Только r : array of string; - Лишнее.. )) Сорри..


AndreyRu   (2006-11-30 21:41:00) [7]

function RetCount(Ch : Char; Text : String; CaseSens : boolean) : integer;
var
  r : array of string;
  s, tmp : string;
  c : Char;
begin
 Result := 0;
 s := trim(Text);
 if not CaseSens then
   begin
     s := AnsiUpperCase(s);
     c := AnsiUpperCase(Ch)[1];
   end;
 if pos(' ', s) = 0 then
   begin
      if (s[1] <> C) or (s[length(s)] <> C) then
         exit;
   end;
 repeat
   tmp := copy(s, 1, pos(' ', s)-1);
   delete(s, 1, pos(' ', s));
   s := trim(s);
   if (tmp[1] = C) and (tmp[length(tmp)] = C) then
     inc(Result);
 until
   pos(' ', s) = 0;
 if (s[1] = C) or (s[length(s)] = C) then
   inc(Result);
end;


tesseract   (2006-11-30 16:50:00) [8]

for i:=1 to length(mystr) do
begin
if mystr[i]=" " then
  //думай сам
end;


Jeer   (2006-11-30 16:49:00) [9]


> Lipris ©   (30.11.06 16:43)


ТЗ поставлено правильно, осталось или написать тебе самому и пожаловаться на какие-либо проблемы в решении этой задачи или определиться с тем, сколько сможешь заплатить за реализацию этого ТЗ на любом языке программирования, поскольку тобой он явно не определен.


Сергей М.   (2006-11-30 16:44:00) [10]

И ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо