Главная страница
    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.01 c
1-1124737726
Yozch1
2005-08-22 23:08
2005.09.11
Сохранение данных в VirtualTreeView


14-1124170032
Установщик
2005-08-16 09:27
2005.09.11
Delphi 2005


2-1123253534
Андрей235
2005-08-05 18:52
2005.09.11
Люди помогите сам никак...


4-1121892537
Dot
2005-07-21 00:48
2005.09.11
загрузка процессора


14-1123928157
Kerk
2005-08-13 14: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
Английский Французский Немецкий Итальянский Португальский Русский Испанский