Необходимо создать программу с использованием динамической библиотеки. А именно: создать подпрограммы обработки множеств: объединение, вычитание, пересечение, проверка вхождение одного множества в другое.
Само задание, методика разработки и пример программы прикреплены.
Код библиотеки:
Код Delphi
Код:
library Pro;
uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
function perese4enie (Mn1, Mn2:Integer):Integer;
begin
result:=(Mn1*Mn2)
end;
function objedinenie (Mn1, Mn2:Ineger):Integer;
begin
result:=(Mn1+Mn2)
end;
function vichitanie (Mn1, Mn2:Integer):Integer;
begin
if RadioButton1.Checked = True then
result:=(Mn1-Mn2);
end
else
begin
result:=(Mn2-Mn1);
end;
function vxoshdenie (Mn1, Mn2:Integer):Integer;
begin
if RadioGroup1.ItemIndex=0 then
begin
if Mn1 <= Mn2 then
Memo1.Lines.Add('Первое множество включено во второе')
else
Memo1.Lines.Add('Первое множество НЕ включено во второе');
end
else
begin
if Mn1 >= Mn2 then
Memo1.Lines.Add('Второе множество включено в первое')
else
Memo1.Lines.Add('Второе множество НЕ включено в первое');
end;
end;
exports perese4enie,vxoshdenie, vichitanie, objedinenie;
end.
Код самой программы (Форма, кнопки):
Код Delphi
Unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type Integer= set of 1..255;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button4: TButton;
Memo1: TMemo;
RadioGroup1: TRadioGroup;
Button3: TButton;
procedure PrintSetof(II: Integer);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1 : TForm1;
Mn1, Mn2 : Integer;
s, result : Integer;
function perese4enie (Mn1, Mn2:Integer):Integer; stdcall; external 'Pro.dll';
function objedinenie (Mn1, Mn2:Integer):Integer; stdcall; external 'Pro.dll';
function vichitanie (Mn1, Mn2:Integer):Integer; stdcall; external 'Pro.dll';
function vxoshdenie (Mn1, Mn2:Integer):Integer; stdcall; external 'Pro.dll';
implementation
{$R *.dfm}
procedure Tform1.PrintSetof(II: Integer);
var
ddd : Integer;
s : String;
begin
for ddd :=1 to 255 do
begin
if ddd in II then
s := s + ' '+IntToStr(ddd);
end;
Memo1.Lines.Add(s);
s := '';
Memo1.Lines.Add('-----------------------');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
for s := 25 to 123 do
Include(Mn1, s);
for s := 5 to 90 do
Include(Mn2, s);
Memo1.Lines.Add('Множества 25..123 и 5..90 успешно созданы.');
PrintSetof(Mn1);
PrintSetof(Mn2);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add('В пересечении этих множеств:');
PrintSetof(result);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Add('В объединении этих множеств:');
PrintSetof(result);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then
begin
Memo1.Lines.Add('В разности 1-ого и 2-ого:');
PrintSetof(result);
end
else
begin
Memo1.Lines.Add('В разности 2-ого и 1-ого:');
PrintSetof(result);
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then
begin
if Mn1 <= Mn2 then
Memo1.Lines.Add('Первое множество включено во второе')
else
Memo1.Lines.Add('Первое множество НЕ включено во второе');
end
else
begin
if Mn1 >= Mn2 then
Memo1.Lines.Add('Второе множество включено в первое')
else
Memo1.Lines.Add('Второе множество НЕ включено в первое');
end;
end;
end.
Админ: Не забываем про оформление кода!
Помогите исправить ошибки и понять как быть с проверкой вхождения множеств одного в другое, где его надо правильно записать в библиотеке или на кнопке?