Консультация № 180105
30.09.2010, 18:08
42.61 руб.
30.09.2010, 20:18
0 0 0
Здравствуйте. Нужно сделать программу "Создание и проверка датчика случайных чисел" методом середины квадратов в программе CodeGear Delphi 2009, т.е.
1. В качестве х0 берется произвольное число.
2. Это число возводится в квадрат.
3. Из квадрата берут среднюю часть. Это и будет новое число х1:
х0 -> х02 -> х1 -> х12 -> х2
Например, х 0= 15, а в двоичной системе счисления х 0=1111. Возведем его в квадрат:
1111 * 1111 = 11100001
Получаем х 1= 1000, а в десятичной системе счисления х1 = 8.

Дам ссылку как проверить датчик случайных чисел (проверку тоже выполнить в программе)

ссылка на полный текс лабораторной (расписано подробно)

Продолжение и подробное описание лабораторной работы

Приложение:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
ch,iMod,iDchr,sDiv: integer;

implementation

{$R *.dfm}

function IntToBin( Value: integer; Digits: integer ): string;//перевод в двоичную форму
var
i: integer;
begin
Result := '';
for i := 0 to Digits-1 do
begin
if Value and ( 1 shl i ) > 0
then Result := '1' + Result
else Result := '0' + Result;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);//перевод в двоичную форму
var
i, k,n: integer;
begin

n:=Strtoint(Edit1.Text)*StrToInt(Edit1.Text);
k := 1;
for i := 1 to n do
begin
k := k * 2;
if k > n then Break;
end;
Edit2.Text := IntToBin( n, i );
end;
procedure TForm1.Button2Click(Sender: TObject);//находим последнюю цифру
var a,s:integer;
begin
//a:= (strtoint(Edit2.text) mod 10);
//edit3.Text:=inttostr(a);

a:=Strtoint(Copy(Trim(Edit2.Text),3,4) );
edit3.Text:=inttostr(a);
end;

procedure TForm1.Button3Click(Sender: TObject);
var b,c,d:integer;
begin
b:= strtoint(Edit1.text);
c:= strtoint(Edit2.text);
d:=b * c;
Edit3.text:=inttostr(d);

end;

end.

Обсуждение

Форма ответа