Форум: "Начинающим";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Внизкол-во слов начинающихся и заканчивающихся заданным символом Найти похожие ветки
← →
Lipris © (2006-11-30 16:43) [0]как написать программу которая в строке найдет количество слов начинающихся и заканчивающихся заданным символом.
Текст: "Без знаков припинания текст теряет выразительность"
например Заданный символ "т"
Результат работы программы: Кол-во слов начин. и заканчив на "т" равно 2
слова отделены только пробелами (одним или несколькими)
← →
Сергей М. © (2006-11-30 16:44) [1]И ?
← →
Jeer © (2006-11-30 16:49) [2]
> Lipris © (30.11.06 16:43)
ТЗ поставлено правильно, осталось или написать тебе самому и пожаловаться на какие-либо проблемы в решении этой задачи или определиться с тем, сколько сможешь заплатить за реализацию этого ТЗ на любом языке программирования, поскольку тобой он явно не определен.
← →
tesseract © (2006-11-30 16:50) [3]for i:=1 to length(mystr) do
begin
if mystr[i]=" " then
//думай сам
end;
← →
AndreyRu (2006-11-30 21:41) [4]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;
← →
AndreyRu (2006-11-30 21:43) [5]Только r : array of string; - Лишнее.. )) Сорри..
← →
Elen © (2006-12-01 07:46) [6]
> 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;
В эдит вводится начало слова (первая буква) в капшине твое решенее.
← →
Elen © (2006-12-01 07:57) [7]
> 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;
(Может быть на всякий случай надо будет пробелами строку входную дополнить на концах)
← →
Думкин © (2006-12-01 08:20) [8]
> Elen © (01.12.06 07:57) [7]
А если строка заканчивается на 2 пробела? Или начинается не с пробела? Или...
← →
Думкин © (2006-12-01 08:27) [9]Снимаю в виду замечания:
> (Может быть на всякий случай надо будет пробелами строку
> входную дополнить на концах)
Правда, студентам помогать текстом - не надо. Декабрь. Сессия.
← →
Elen © (2006-12-01 09:29) [10]
> Снимаю в виду замечания:
Ага я вот тоже с сессией так парюсЪЪ что и лишний раз [6] пишу... Крыша хлопает в ладоши... :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.048 c