![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте, Уважаемые!
Поставили задачу написать программу которая могла бы составлять слова (из некого словаря) из слова или фразы которая задается произвольно. При этом желательно учитывать порядок слов. Поискал здесь, что то похожее вроде есть, но не совсем. Подскажите, пожалуйста, алгоритм поиска! З.Ы. Программированием не занимаюсь лет 5 уже...почти все забылось((( сделать форму, загрузить файл словаря еще осилю, а чего с ним дальше делать??? просто тупик |
|
#2
|
||||
|
||||
|
... Составляла слова ...
Имеется ввиду предложение? Неочень понятна постановка задачи. |
|
#3
|
|||
|
|||
|
попытаюсь объяснить
![]() дано, например, слово "магазин" а в словаре есть слова "маг", "газ" и др. надо чтоб программа могла выбрать(составить) из исходного слова слова из словаря (то есть найти в словаре слова которые могут получиться из исходного) надеюсь понятней стало |
|
#4
|
|||
|
|||
|
в инете находил несколько готовых программ, даже автору написал, но пока ответа не было
|
|
#5
|
|||
|
|||
|
Если без перестановки букв, то цикл по словарю и проверка наличия подстроки с помощью функции Pos.
|
|
#6
|
|||
|
|||
|
Цитата:
а если с перестановкой? вы б в какую сторону думать начали? на символы разбивать? |
|
#7
|
||||
|
||||
|
Ну вот вам вариант:
Код:
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, 10.03.2009 в 22:12. |
|
#8
|
|||
|
|||
|
Цитата:
хороший вариант, спасибо! отдал на проверку, так сказать ![]() |