русский

Мои программы

03.02.25 18:41
Re: Мои программы
 
gendy Dinosaur
gendy
in Antwort alek4 03.02.25 18:09

Конечно! Вот пример программы на Delphi 7, которая случайным образом генерирует логические многочлены, используя логические операции (связки), скобки и переменные.


unit LogicalPolynomial;

interface

uses

SysUtils, Classes, Controls, Forms, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

private

function GenerateRandomPolynomial(Depth: Integer): string;

public

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

Operations: array[0..4] of string = ('~', '&', '|', '->', '<->');

Variables: array[0..3] of string = ('A', 'B', 'C', 'D');

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Lines.Clear;

Memo1.Lines.Add('Случайный логический многочлен:');

Memo1.Lines.Add(GenerateRandomPolynomial(3));

end;

function TForm1.GenerateRandomPolynomial(Depth: Integer): string;

var

OpIndex, VarIndex: Integer;

SubFormula1, SubFormula2: string;

begin

if Depth = 0 then

begin

VarIndex := Random(Length(Variables));

Result := Variables[VarIndex];

Exit;

end;

OpIndex := Random(Length(Operations));

if Operations[OpIndex] = '~' then

begin

Result := Operations[OpIndex] + '(' + GenerateRandomPolynomial(Depth - 1) + ')';

end

else

begin

SubFormula1 := GenerateRandomPolynomial(Depth - 1);

SubFormula2 := GenerateRandomPolynomial(Depth - 1);

Result := '(' + SubFormula1 + ' ' + Operations[OpIndex] + ' ' + SubFormula2 + ')';

end;

end;

end.


это сочинил copilot проверять не стану.


Кстати это была тема той самой проектарбайт и ваша программа смотрится на фоне той очень бледно. Хотя сейчас понимаю, что сделана она была абсолютно неграмотно. У меня не было ограничения по количеству переменных и итераций. Ну разве что размером окна ввода

Фашизм будет разбит


Человека карают только те боги, в которых он верит

 

Sprung zu