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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2020, 06:23   #1
walet
Пользователь
 
Регистрация: 03.10.2019
Сообщений: 11
Злость (Delphi)Подсчет количества каждого символа в тексте

По условию задачи необходимо определить, сколько раз в тексте введенном в мемо1 встречается каждый из символов (не считая пробела и знаков препинания), и вывести в мемо2 статистику (в идеале с % от общего числа всех символов)

Пытался сделать таким образом, но выводит только "?=0"

Код:
var i:byte; b,j,f:integer;
r:array[0..62]of char;
t:array[0..62]of integer;
begin
b:=192;
for i:=0 to high(r) do
r[i]:=char(b+i);
 
FillChar(t,SizeOf(t),0);
for j:=0 to memo1.Lines.Count-1 do
  for f:=0 to length(memo1.Lines[j]) do
      for i:=0 to high(r) do
      if  memo1.Lines[j][f]=r[i] then
         inc(t[i]);
 
for i:=0 to high(t) do
memo2.Lines.Add(r[i]+'='+inttostr(t[i]));

Последний раз редактировалось walet; 02.03.2020 в 06:42.
walet вне форума Ответить с цитированием
Старый 02.03.2020, 13:50   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Вам же ответили на другом форуме

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
t: PAnsiChar;
i,len: integer;
counts: array[0..255] of word;
begin
  t:=Memo1.Lines.GetText;
  len:=lstrlenA(t)-1;
  ZeroMemory(@counts,sizeof(counts));
  for i:=0 to len do
    inc(counts[ord(t[i])]);
  Memo1.Text:=Memo1.Text+#13#10;
  for i:=33 to 255 do
    if counts[i]>0 then
      Memo2.Text:=Memo2.Text+chr(i)+': '+inttostr(counts[i])+#13#10;
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.03.2020, 06:23   #3
walet
Пользователь
 
Регистрация: 03.10.2019
Сообщений: 11
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Вам же ответили на другом форуме
Да, но в при попытке компиляции вылетает identifier not found на lstrlenA и ZeroMemory
walet вне форума Ответить с цитированием
Старый 03.03.2020, 11:26   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Костыльно, конечно, но может кто-то предложит вариант по лучше
Код:
procedure TForm1.Button1Click(Sender: TObject);
var p:Char;
i,j,len,counts:integer;
t:PAnsiChar;
begin
  Memo2.Clear;
  t:=Memo1.Lines.GetText;
  len:=Length(t)-1;

  for i:=0 to len do
  for j:=0 to len-i do
  if t[j]<t[j+1] then
  begin {Обмен элементов}
    p:=t[j];
    t[j]:=t[j+1];
    t[j+1]:=P;
  end;

  counts:=1;
  for i:=0 to  len+1  do
    if (t[i]<>t[i-1]) then
    begin
       j:=Ord(t[i]);
     if (j<>10) and (j<>13) and (j<>32) and (t[i]<>'.') and (t[i]<>',') then
     Memo2.Lines.Add(t[i]+': '+inttostr(counts));
      counts:=1;
    end else inc(counts);

   ShowMessage('Подсчет окончен! Всего символо без пробелов, точек и запятых: '+IntToStr(Memo2.Lines.Count));
end;
from dark to light)

Последний раз редактировалось Алексей_2012; 03.03.2020 в 11:36.
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества предложений в выделенном тексте в vba word Stevo Помощь студентам 6 19.04.2019 12:47
Машина Тьюринга(замена каждого 2 символа) Smokedx Помощь студентам 0 15.05.2016 08:46
Подсчет повторений каждого символа virus77724 Помощь студентам 4 15.12.2015 16:21
Подсчет количества заданной фразы в тексте, не получается сделать infosimple JavaScript, Ajax 6 14.12.2013 13:52
Pascal Для каждого символа текста указать его относительную частоту появления в тексте student___ Помощь студентам 52 02.05.2013 18:12