Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
11-1092338945
dimon_2004
2004-08-12 23:29
2005.09.11
TKOLVMHSyntaxEdit


1-1124297309
Ivanov
2005-08-17 20:48
2005.09.11
Работа с .rar


3-1122644556
Silver ...
2005-07-29 17:42
2005.09.11
Панели DBCtrlGrid цветом из Базы


2-1070808248
serfom
2003-12-07 17:44
2005.09.11
Как осуществить поиск по DB


1-1124622947
Валя
2005-08-21 15:15
2005.09.11
Работа с классами.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский