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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.03.2009, 18:21
mishka mishka вне форума
Прохожий
 
Регистрация: 09.03.2009
Сообщения: 5
Репутация: 10
По умолчанию Составление слов из слова

Здравствуйте, Уважаемые!

Поставили задачу написать программу которая могла бы составлять слова (из некого словаря) из слова или фразы которая задается произвольно. При этом желательно учитывать порядок слов.
Поискал здесь, что то похожее вроде есть, но не совсем.
Подскажите, пожалуйста, алгоритм поиска!

З.Ы. Программированием не занимаюсь лет 5 уже...почти все забылось(((
сделать форму, загрузить файл словаря еще осилю, а чего с ним дальше делать??? просто тупик
Ответить с цитированием
  #2  
Старый 10.03.2009, 03:12
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

... Составляла слова ...
Имеется ввиду предложение? Неочень понятна постановка задачи.
Ответить с цитированием
  #3  
Старый 10.03.2009, 19:22
mishka mishka вне форума
Прохожий
 
Регистрация: 09.03.2009
Сообщения: 5
Репутация: 10
По умолчанию

попытаюсь объяснить
дано, например, слово "магазин" а в словаре есть слова "маг", "газ" и др.
надо чтоб программа могла выбрать(составить) из исходного слова слова из словаря (то есть найти в словаре слова которые могут получиться из исходного)
надеюсь понятней стало
Ответить с цитированием
  #4  
Старый 10.03.2009, 19:23
mishka mishka вне форума
Прохожий
 
Регистрация: 09.03.2009
Сообщения: 5
Репутация: 10
По умолчанию

в инете находил несколько готовых программ, даже автору написал, но пока ответа не было
Ответить с цитированием
  #5  
Старый 10.03.2009, 19:44
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если без перестановки букв, то цикл по словарю и проверка наличия подстроки с помощью функции Pos.
Ответить с цитированием
  #6  
Старый 13.03.2009, 00:07
mishka mishka вне форума
Прохожий
 
Регистрация: 09.03.2009
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Если без перестановки букв, то цикл по словарю и проверка наличия подстроки с помощью функции Pos.

а если с перестановкой? вы б в какую сторону думать начали?
на символы разбивать?
Ответить с цитированием
  #7  
Старый 10.03.2009, 22:04
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну вот вам вариант:
Код:
unit Unit34;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm34 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    ProgressBar1: TProgressBar;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    Dictionary: TStringList;
  end;

var
  Form34: TForm34;

implementation

{$R *.dfm}

procedure TForm34.Button1Click(Sender: TObject);
Var
  i: Integer;
begin
 Memo1.Clear;
 ProgressBar1.Position := 0;
 for i := 0 to Dictionary.Count - 1
 do begin
    if Pos(AnsiUpperCase(Dictionary.Strings[i]), AnsiUpperCase(Edit1.Text)) <> 0
    then Memo1.Lines.Add(Dictionary.Strings[i]);
    ProgressBar1.StepIt;
    Application.ProcessMessages;
    end;
end;

procedure TForm34.FormCreate(Sender: TObject);
begin
 Dictionary := TStringList.Create;
 Dictionary.LoadFromFile('C:\Dictionary.txt');
 Dictionary.Sort;
 ProgressBar1.Max := Dictionary.Count;
 Label1.Caption := Format('В словаре %d слов',[Dictionary.Count]);
end;

end.

и dfm-файл к нему.

object Form33: TForm33
  Left = 0
  Top = 0
  Caption = 'Form33'
  ClientHeight = 341
  ClientWidth = 643
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  DesignSize = (
    643
    341)
  PixelsPerInch = 96
  TextHeight = 13
  object SimpleGraph1: TSimpleGraph
    Left = 8
    Top = 8
    Width = 627
    Height = 265
    Anchors = [akLeft, akTop, akRight, akBottom]
    ShowGrid = False
    TabOrder = 0
  end
  object Button1: TButton
    Left = 8
    Top = 308
    Width = 75
    Height = 25
    Anchors = [akLeft, akBottom]
    Caption = 'Button1'
    TabOrder = 1
    OnClick = Button1Click
  end
  object ProgressBar1: TProgressBar
    Left = 8
    Top = 285
    Width = 627
    Height = 17
    Anchors = [akLeft, akRight, akBottom]
    Step = 1
    TabOrder = 2
  end
end
Admin: Пользуемся тегами!!!

Последний раз редактировалось Admin, 10.03.2009 в 22:12.
Ответить с цитированием
  #8  
Старый 12.03.2009, 23:59
mishka mishka вне форума
Прохожий
 
Регистрация: 09.03.2009
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ну вот вам вариант:

хороший вариант, спасибо!
отдал на проверку, так сказать
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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