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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2013, 10:30   #1
acheron1757
 
Регистрация: 16.05.2013
Сообщений: 6
По умолчанию обработки текста: определить в тексте наиболее часто встречающиеся символы (Delphi)

кто сможет подсказать, нужно разработать программу обработки текста, определить в тексте наиболее часто встречающиеся символы, количество символов выбирается.
САМ Я НЕ МОГУ ВСПОМНИТЬ КАК СДЕЛАТЬ СРАВНЕНИЕ СИМВОЛОВ! И ПОТОМ ВЫВЕСТИ ИХ
acheron1757 вне форума Ответить с цитированием
Старый 16.05.2013, 10:56   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А вообще, нужно делать или универсально:
встретили символ, проверили, был ли он раньше (есть ли он уже в нашем списке), если есть - нарастили счётчик на единицу, если не было такого символа - добавили его в список, счётчик поставили ему 1. Удобно использовать готовые списки - например, TSTringList

либо, менее универсально, но зато ОЧЕНЬ быстро, просто и эффективно.
создаём массив, который индексируется кодами символов.
например, для английских сивмолов:
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
   EnglChars = ['A'..'Z','a'..'z'];
var A : array['A'..'z'] of integer;
  ch : char;
  SInput : string;
  i : integer;
begin
  // обнулим счётчики
  for ch:='A' to 'z' do A[ch] := 0;

  SInput := Memo1.Text; // возьмём текст для обработки из Memo

  // подсчитаем количество появлений для символов из строки SInput
  for i:=1 to Length(SInput) do
    if SInput[i] in EnglChars then
           inc( A[ SInput[i] ] );

  // выведем результаты в Memo2
  Memo2.Lines.Clear;
  for ch:='A' to 'z' do
    if A[ch] > 0 then
       Memo2.Lines.Append(' символ '+ch+' встречается '+IntToStr( A[ch] ) + ' раз ');

end;
p.s. чтобы вывести нужное количество наиболее часто встречающихся символов, нужно отсортировать массив с результатами...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.05.2013, 11:29   #3
acheron1757
 
Регистрация: 16.05.2013
Сообщений: 6
По умолчанию

спасибо сейчас попробуем
acheron1757 вне форума Ответить с цитированием
Старый 16.05.2013, 12:10   #4
acheron1757
 
Регистрация: 16.05.2013
Сообщений: 6
По умолчанию обработка текста

кто подскажет как дописать программу, что бы она выводила часто встречающиеся символы из текста

вот то что есть
прога.rar

программа считает символы и выводит результат, но по всему алфовиту
acheron1757 вне форума Ответить с цитированием
Старый 16.05.2013, 12:24   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Банально вывести первых 5 букв с наибольшим кол-во повторений.
Человек_Борща вне форума Ответить с цитированием
Старый 16.05.2013, 12:30   #6
acheron1757
 
Регистрация: 16.05.2013
Сообщений: 6
По умолчанию

я до банального не знаю как это реализовать в принципе как я понял можно через массив, но тут у меня тоже возникли небольшие сложности, вывести в массив еще ладно но потом как оставить наибольшее значения из этого массива в стоке, или вывести сообщением
acheron1757 вне форума Ответить с цитированием
Старый 16.05.2013, 12:42   #7
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от acheron1757 Посмотреть сообщение
я до банального не знаю как это реализовать в принципе как я понял можно через массив, но тут у меня тоже возникли небольшие сложности, вывести в массив еще ладно но потом как оставить наибольшее значения из этого массива в стоке, или вывести сообщением
похожая тема уже поднималась на этом форуме

Создать двумерный массив из символов где первый эл. это символ, второй - коллисество и дальше пройтись по тексту и увеличивать в массиве счетчик для каждого символа встречающегося в тексте. Потом отсортировать масив по "счетчику" символов и вывести нужный результат
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!
spirit-ua вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си. Ввести строку символов. Найти букву, наиболее часто встречающуюся в тексте. ClassicV Общие вопросы C/C++ 8 05.03.2016 22:39
из текстового файл получить 5 наиболее часто встречающихся слов и число их появлений (на Delphi) sifa Помощь студентам 5 09.01.2012 18:34
в тексте слова, содержащие ровно одну из 10 наиболее часто встречающихся букв yaroslav_bondarev Паскаль, Turbo Pascal, PascalABC.NET 3 16.12.2011 10:11
Delphi. Вывести наиболее часто повторяющуюся цифру из строки символов Kurai Помощь студентам 1 27.04.2010 23:04
Нахождение наиболее часто встречающегося элемента Sun :) Помощь студентам 2 30.09.2009 23:01