Вниз
Скачать: CL | DM;

Подсчет заглавных букв   Найти похожие ветки 

← →
Shamansky   (2005-08-08 17:14) [0]

Мастера подскажите как подсчитать количество заглавных букв в строке?


← →
Ega23 ©   (2005-08-08 17:24) [1]


function MyFunc(aStr:String):Integer;
var
i:Integer;
ss:string;
begin
Result:=0;
ss:=ANSIUpperCase(aStr);
for i:=1 to Length(aStr) do
 if aStr[i]=ss[i] then Result:=Result+1;
end;


← →
Shamansky   (2005-08-08 17:33) [2]

Спасибо


← →
Kolan ©   (2005-08-08 17:40) [3]

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 S: string;
 I: Integer;
 Count: Integer;
begin
 Count := 0;
 S := Edit1.Text;
 for I := 1 to Length(S) do
   if S[I] in ["A".."Z"] then
     Count := Count + 1;
 ShowMessage(IntToStr(Count));
end;


Если русские то множество надо заменить на множество русских букв.
S[I] in ["А".."Я"]


← →
Fay ©   (2005-08-08 17:53) [4]

Kolan ©   (08.08.05 17:40) [3]
>> S[I] in ["А".."Я"]
Нет.


← →
Kolan ©   (2005-08-08 18:00) [5]

В Edit.Text
Почему Же Нет?
var
 S: string;
 I: Integer;
 Count: Integer;
 Tick: Longint;
begin
 S := Edit1.Text;
 Count := 0;
 Tick := GetTickCount;
 for I := 1 to Length(S) do
   if S[I] in ["À".."ß"] then
     Count := Count + 1;
 Tick := GetTickCount - Tick;
 Edit2.Text := IntToStr(Count) + " " + IntToStr(Tick);
end;


Ответ:
3 0


← →
Ega23 ©   (2005-08-08 18:00) [6]

2 Kolan ©   (08.08.05 17:40) [3]

Про язык речи не шло, не так-ли?
И потом, что-то я не уверен про "Я".


← →
Kolan ©   (2005-08-08 18:05) [7]

Кстати а как бы скорость замерить.


> Про язык речи не шло, не так-ли?

Так так


> И потом, что-то я не уверен про "Я".

А что тут может быть(интересно...) :)


← →
Fay ©   (2005-08-08 18:07) [8]

2 Kolan ©   (08.08.05 18:00) [5]
Проверь с "Ну Ё-МОЁ!"


← →
Ega23 ©   (2005-08-08 18:16) [9]

Точно! Не "Я", а "Ё". С "Ё" какие-то проблемы.


← →
Kolan ©   (2005-08-08 18:21) [10]

Угу понял.

А так.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 S: string;
 I: Integer;
 Count: Integer;
 Tick: Longint;
begin
 S := Edit1.Text;
 Count := 0;
 Tick := GetTickCount;
 for I := 1 to Length(S) do
   if S[I] in (["А".."Я", "Ё"]) then
     Count := Count + 1;
 Tick := GetTickCount - Tick;
 Edit2.Text := IntToStr(Count) + " " + IntToStr(Tick);
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
 S: string;
 I: Integer;
 Count: Integer;
 Tick: Longint;
begin
 S := Edit1.Text;
 Count := 0;
 Tick := GetTickCount;
 for I := 1 to Length(S) do
   if ((Ord(S[I]) >= 192) and (Ord(S[I]) <= 222)) or (Ord(S[I]) = 168) then
     Count := Count + 1;
 Tick := GetTickCount - Tick;
 Edit2.Text := IntToStr(Count) + " " + IntToStr(Tick);
end;


← →
Poirot ©   (2005-08-08 18:27) [11]

Есть замечательная тулза time гнусная помоему вот с ней и запусти:) малентький и шустрый , а потом статистическими методами на основе выборки из 1000 испытаний проверь что быстрее:) а проще посчитай количество инструкций для процессора в каждом из случаев:)


← →
begin...end ©   (2005-08-08 18:36) [12]

> Poirot ©   (08.08.05 18:27) [11]

GetTickCount -- тоже нормально, если число итераций цикла увеличить. Ещё лучше -- QueryPerformanceCounter. В обоих случаях желательно повысить приоритет текущего потока (GetCurrentThread -> SetThreadPriority).


← →
Amoeba ©   (2005-08-09 11:10) [13]

Правильное решение дано в Ega23 ©   (08.08.05 17:24) [1]


← →
Anatoly Podgoretsky ©   (2005-08-09 11:52) [14]

for I := 1 to Length(S) do
  if IsCharUpper(S[I]) then Count := Count + 1;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.022 c
1-1124611170
.ruslan
2005-08-21 11:59
2005.09.11
Сортировка в ListView по индексу иконки


2-1123514309
Андрей235
2005-08-08 19:18
2005.09.11
если файла нет создать его?


9-1115753319
Da Stranger
2005-05-10 23:28
2005.09.11
Система предотвращения столкновений


1-1124117594
ksa2002
2005-08-15 18:53
2005.09.11
Передача параметра из потока


1-1124478201
-=[ASH]=-
2005-08-19 23:03
2005.09.11
Визуальный редактор




   Наверх