Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2010, 19:07   #1
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию Как подсчитать сколько раз встречается символ в строке?

Надо подсчитать сколько раз встречается определенный символ в строке. Например сколько раз встречается цифра 1 в строке 8513954175411. Должно получиться 4. Могу сделать с помощью while, но вроде есть стандартное средство.
zver777 вне форума Ответить с цитированием
Старый 09.01.2010, 19:08   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Код:
For N:=1 to Length(S) do
 If S[N] = '1' Then Inc(I);
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 09.01.2010, 20:09   #3
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию

Спасибо, но хотелось бы без цикла так как строк много очень. Вроде есть что-то типа poz.
zver777 вне форума Ответить с цитированием
Старый 09.01.2010, 20:15   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Есть библиотека по работе со строками QStrings называется ...
Там есть функция
Код:
function Q_CharCount(const S: string; Ch: Char): Integer;
Эту библиотеку я давал здесь несколько раз ...

P.S. http://programmersforum.ru/showpost....98&postcount=6
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 09.01.2010, 20:20   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Есть библиотека по работе со строками QStrings называется ...
Там есть функция
Код:
function Q_CharCount(const S: string; Ch: Char): Integer;
не смотрел библиотечку, но хочу автора топика разочаровать - чудес не бывает, внутри функции реализация подсчёта ВСЁ равно выполнена с помощью цикла!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.01.2010, 20:55   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ТС, вынужден огорчить.
что pos тоже через цикл идет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.01.2010, 22:00   #7
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Serge_Bliznykov, я ведь не "чудо-функцию" привел, а просто ответил примерно на вопрос zver777 в посте #3
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 09.01.2010, 23:00   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Kotofff, ну что Вы сразу обижаетесь?!
ни к Вам, ни к Вашей библиотеке/функции никаких претензий!
И я ведь не сказал, что Вы плохое посоветовали!!
Просто, я считаю, программист должен писать код, представляя, что там "унутри" программы творится...
Вот я (как и Пепел Феникса) пытались открыть zver777 глаза...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.01.2010, 23:08   #9
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию

Всем спасибо. Сделал циклом.
zver777 вне форума Ответить с цитированием
Старый 10.01.2010, 00:01   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Всем спасибо. Сделал циклом.
вот и замечательно.
Кстати, если строки действительно очень большие и их очень много (т.е. время выполнения алгоритма сколь нибудь существенное число, не доли секунды), то можно попытаться использовать такую конструкцию (если меня не обманывает моя интуиция, это должно дать выигрыш в быстродействии):
Код:
  N := Pos(Символ, S);
  if N>0 then begin
    Count := 1;
    For i:=N+1 to Length(S) do
      If S[i] = Символ Then Inc(Count);
  end;
p.s. не проверял, могу и заблуждаться...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP.Как посчитать, сколько раз слово встречается в файле? Princesse Помощь студентам 0 07.12.2009 00:24
Сколько раз слово встречается в строке ksu25 Паскаль, Turbo Pascal, PascalABC.NET 1 25.09.2009 15:53
Сколько раз в тексте встречается каждое слово. 08ekhiv1 Помощь студентам 2 11.03.2009 10:56
сколько раз заданное слово встречается в данной строке pascal1994 Помощь студентам 4 04.02.2009 08:41
Сколько раз встречается данное слово n1k1c4 Помощь студентам 4 13.12.2007 20:33