
12.02.2015, 14:31
|
Прохожий
|
|
Регистрация: 03.11.2013
Сообщения: 32
Версия Delphi: Delphi 7
Репутация: 10
|
|
Я сделал немного по хитрому добавил вторую кнопку с названием "Словестная форма"
Код:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function IntToRome(Value : Integer) : String;
const
Romes : Array [1..9] Of String =
('I','II','III','IV','V','VI','VII','VIII','IX');
begin
If Not (Value In [1..9])
Then Raise Exception.Create('значение должно быть в диапазоне 1..9.');
Result := Romes[Value];
end;
function IntToWord(Value : Integer) : String;
const
Wordes : Array [1..9] of String =
('Один','Два','Три','Четыре','Пять','Шесть','Семь','Восемь','Девять');
begin
If not (Value In [1..9])
Then Raise Exception.Create('значение должно быть в диапазоне Один..Девять.');
Result := Wordes[Value];
end;
procedure GetNumbers(var A : Array of Integer);
var
I, Idx : Integer;
B : Array [0..8] Of Integer;
begin
If (Length(A) > 9) Or (Length(A) < 1)
Then Raise Exception.Create('входной массив дорлжен иметь длину 1 to 9. ');
// инициализация временного массива
For I := 0 to 8 Do B[i] := 0;
// генерация листа
For I := 1 to 9 Do
Begin
Idx := Random(9);
While B[Idx] <> 0 Do
If Idx = 8 Then Idx := 0 Else Inc(Idx);
B[Idx] := I;
End;
// копирование результатат в выходной массив
For I := Low(A) To High(A) Do A[i] := B[i];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
N, I : Integer;
A : Array Of Integer;
S : String;
begin
Randomize;
N := Random(9)+1; // Random числа 1..9
SetLength(A,N); // выделение памяти массиву
GetNumbers(A);
// Отображение результата
S := '';
For I := Low(A) To High(A) Do
Begin
S := S + IntToRome(A[i]);
If I < High(A) Then S := S + ', ';
End;
ShowMessage(S);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
N, I : Integer;
A : Array Of Integer;
S : String;
begin
Randomize;
N := Random(9)+1; // Random слова Один..Девять
SetLength(A,N); // выделение памяти массиву
GetNumbers(A);
// Отображение результата
S := '';
For I := Low(A) To High(A) Do
Begin
S := S + IntToWord(A[i]);
If I < High(A) Then S := S + ', ';
End;
ShowMessage(S);
end;
end.
вот так получилось
|