Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.12.2009, 22:23
Fangornm Fangornm вне форума
Прохожий
 
Регистрация: 17.12.2009
Сообщения: 3
Репутация: 10
По умолчанию количество символов

Ребят, как посчитать количество символов в тексте? типа "а" = 31, "б" = 25 и тд.
Ответить с цитированием
  #2  
Старый 17.12.2009, 22:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Взять текст как строку и в цикле идти по ней как по массиву.
Тут скорее вопрос - какие символы тебе надо считать - английские, русские, различать большие или маленькие. В принципе, можно сделать массив из 256 элементов и считать в них по коду символа.

Код:
type
  TSmb = Array [0..255] Of Integer;

procedure SumSymbols(AText : String; var S : TSmb);
var
  I : Integer;
begin
  For I := 1 To Length(AText) Do
    Inc(S[Ord(AText[i])]);
end;
Ответить с цитированием
  #3  
Старый 17.12.2009, 23:05
Fangornm Fangornm вне форума
Прохожий
 
Регистрация: 17.12.2009
Сообщения: 3
Репутация: 10
По умолчанию

русский текст, нужно посчитать сколько раз символ встречается в тексте и составить их таблицу)
Ответить с цитированием
  #4  
Старый 18.12.2009, 02:57
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

А, например, символы "А" и "а" счиются разными?
Ответить с цитированием
  #5  
Старый 18.12.2009, 03:15
Kapitoshka438 Kapitoshka438 вне форума
Начинающий
 
Регистрация: 09.11.2009
Сообщения: 145
Репутация: 238
По умолчанию

Если регистр не имеет значения и нужно считать только количество букв, не считая знаки препинания и т.д., отлично подойдет вот такой способ.
Код:
procedure CalculateSymbols(Text: string);
var
  S: string;
  M: array ['а'..'я'] of Integer;
  I: Char;
  J: Integer;
begin
  S := AnsiLowerCase(Text);
  for I := 'а' to 'я' do
    M[i] := 0;
  for J := 1 to Length(S) do
    Inc(M[S[J]]);
  for I := 'а' to 'я' do
    Writeln(I + ': ' + IntToStr(M[i]));
end;
Ответить с цитированием
  #6  
Старый 18.12.2009, 23:45
Fangornm Fangornm вне форума
Прохожий
 
Регистрация: 17.12.2009
Сообщения: 3
Репутация: 10
По умолчанию

спасибо) ща попробую
Ответить с цитированием
  #7  
Старый 19.12.2009, 00:45
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Код:
  if S[J] in ['а'..'я'] then
      Inc(M[S[J]]);
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:18.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025