Форум: "Начинающим";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
ВнизПодсчет заглавных букв Найти похожие ветки
← →
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 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.015 c