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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2016, 23:42   #11
qaguero11
Пользователь
 
Регистрация: 01.07.2016
Сообщений: 14
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
"мама мыла раму папу" - это 1 слово или сколько?

В любом случае, смотри как красиво выглядит моё решение:
Код:
{$TELEPATOR_MODE ON}
{$MESSAGE 'do not copy this code! bugs inside!'}

type
  TFuckIt = class(TStringList)
  private
    FMax: int32;
    FFilter: string;
  protected
    function Wanted(const ASymbol: Char): Boolean;
    function IncludeCount(const AWord: string): int32;
  public
    constructor Create(const ADefaultFilter: string = ''); reintroduce;
    procedure Push(const AWord: string);
    procedure Clear;
    
    property Max: int32 read FMax;
    property Filter: string read FFilter write FFilter;
  end;

implementation

constructor TFuckIt.Create(const ADefaultFilter: string = '');
begin
  inherited Create();
  FFilter:= ADefaultFilter;
end;

function TFuckIt.Wanted(const ASymbol: Char): Boolean;
begin
  Result:= pos(string(ASymbol), FFilter) <> 0;
end;

function TFuckIt.IncludeCount(const AWord: string): int32;
var
  c: Char;
begin
  Result:= 0;
  for c in AWord do
    inc(Resulr, Boolean(Wanted(c)));
end;

procedure TFuckIt.Push(const AWord: string);
var
  cnt: int32;
begin
  cnt:= IncludeCount(AWord);
  
  if cnt < FMax
    then exit;
    
  if cnt > FMax
    then begin
           inherited Clear();
           FMax:= cnt;
         end;
         
  Self.Add(AWord);
end;

procedure TFuckIt.Clear;
begin
  inherited;
  FMax:= 0;
end;

{$TELEPATOR_MODE OFF}

end.
оооооххх,мда сложно как то
qaguero11 вне форума Ответить с цитированием
Старый 01.07.2016, 23:50   #12
qaguero11
Пользователь
 
Регистрация: 01.07.2016
Сообщений: 14
По умолчанию

блин мне нужно очень просто , вот посмотри я написал чтобы считало все согласные в предложении надо добавить чтобы считало в слове и определяло слово в котором больше согласных
Код:
procedure TForm1.Button1Click(Sender: TObject);
const
sogl=['б', 'в', 'г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ']; //согласные
var
    stroka:string;
    i, s,g:Byte;
begin
stroka :=memo1.text;  //входная строка
g :=0;  s:=0;
for i := 1 to Length(stroka) do begin
if stroka[i] in sogl then Inc(g);
end;
ShowMessage('Количество строчных согласных  - '+InttoStr(g));
end;

end.

Последний раз редактировалось Аватар; 02.07.2016 в 16:58.
qaguero11 вне форума Ответить с цитированием
Старый 01.07.2016, 23:56   #13
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
чтобы считало все согласные в предложении надо добавить чтобы считало в слове и определяло слово в котором больше согласных
мой код формирует список слов с максимальным количеством вхождений заданных букв (символов)? т.е. решает всю задачу полностью. Как ты и просил. Ничего сложного там нет.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.07.2016, 16:21   #14
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
function TFuckIt.Wanted(const ASymbol: Char): Boolean;
begin
Result:= pos(string(ASymbol), FFilter) <> 0;
end;
у автора то поиск по лучше будет, и без лишних сущностей ))
come-on вне форума Ответить с цитированием
Старый 02.07.2016, 16:36   #15
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
у автора то поиск по лучше будет, и без лишних сущностей ))
а мой - выполняет поставленную задачу.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.07.2016, 16:39   #16
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
а мой - выполняет поставленную задачу.
из москвы в париж можно конечно и через пекин, только нафига? ))
come-on вне форума Ответить с цитированием
Старый 02.07.2016, 16:54   #17
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
из москвы в париж можно конечно и через пекин, только нафига? ))
не понял, причём тут париж. код автора поставленную задачу не решает, а мой решает. чо не так-то?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 02.07.2016, 17:57   #18
qaguero11
Пользователь
 
Регистрация: 01.07.2016
Сообщений: 14
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
из москвы в париж можно конечно и через пекин, только нафига? ))
ПОМОГИТЕ НАПИСАТЬ ПЖЛСТ
qaguero11 вне форума Ответить с цитированием
Старый 02.07.2016, 18:08   #19
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

так что тут помогать

разбить строку по словам, если делфи новое то там есть встроенные средства если старое найдите в инете готовую функцию, вот тут к примеру можно посмотреть
http://ru.stackoverflow.com/question...80%D0%B0-split

дальше цикл по словам и с тем анализом что у вас уже есть, только код определения количества вынесите в отдельную функцию, чтобы использовать в разных местах
come-on вне форума Ответить с цитированием
Старый 10.07.2016, 08:30   #20
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
type tSlova=record
        Str:string;
        Count:integer;
     end;
const sogl=['б','в','г','д','ж','з','й','к','л','м','н','п','р','с','т','ф','х','ц','ч','ш','щ'];
var s,s1:string;
    i,j,k,l,c:integer;
    slova:array of tSlova;
begin
   s:=Memo1.Text;
   c:=0;
   For i:=0 to Memo1.Lines.Count-1 do
   begin
      s:=Memo1.Lines[i]+' ';
      s1:='';
      For j:=1 to Length(s) do
      begin
         If s[j]=' ' then
         begin
            c:=c+1;
            SetLength(slova,c);
            slova[c-1].Str:=s1;
            l:=0;
            For k:=1 to Length(s1) do
               If s1[k] in sogl then
                  Inc(l);
            slova[c-1].Count:=l;
            s1:='';
         end else
            s1:=s1+s[j];
      end;
   end;
   Memo2.Clear;
   For i:=0 to c-1 do
      Memo2.Lines.Add(Format('%s - %d согласных',[slova[i].Str,slova[i].Count]));
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет кол-ва количество согласных букв DoktorKraft Помощь студентам 5 20.08.2015 16:06
Создать текстовый файл и подсчитать количество гласных/согласных в нём /Pascal ABC tinager2011 Помощь студентам 1 12.04.2014 22:10
количество слов в предложении, гласных и согласных букв Делфи 7 программирование Помощь студентам 3 10.10.2013 21:32
C# Подсчитать количество согласных букв SmailikEKB Помощь студентам 1 17.05.2013 23:02