Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчёт о выч практике.docx
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
30.07 Кб
Скачать

Implementation

{$R *.dfm}

function CheckValue(s:string):boolean; {функция возвращает значение True, если строка S состоит из чисел (0-9)}

var

I:integer;

begin

try

for i:=1 to Length(s) do

if (Copy(s,i,1)='0') or (Copy(s,i,1)='1') or (Copy(s,i,1)='2') or (Copy(s,i,1)='3') or (Copy(s,i,1)='4') or (Copy(s,i,1)='5') or (Copy(s,i,1)='6') or (Copy(s,i,1)='7') or (Copy(s,i,1)='8') or (Copy(s,i,1)='9') then

result:=true

else

begin

result:=false;

break;

end;

finally

end;

end;

function DecToBin(s:string):string; {функция возвращает двоичный вид (строковый) десятичного числа(строковый)}

var

chis,i:integer;

res:string[12];

begin

chis:=StrToInt(s);

for i:=12 downto 1 do

begin

if (chis mod 2 <> 0) then res[i]:='1'

else res[i]:='0';

chis:=trunc(chis/2);

end;

for i:=1 to 12 do

result:=result+res[i];

end;

function Kolich1(s:string):integer; {функция возвращает количество единиц в строке S}

var

I:integer;

begin

result:=0;

for i:=1 to 12 do

if Copy(s,i,1)='1' then result:=result+1;

end;

procedure TFMain.acWorkExecute(Sender: TObject);

var

chis, i:integer;

begin

if CheckValue(EdInput.Text)=false then

showmessage('!Недопустимое значение!')

else

if not((StrToInt(FMain.EdInput.Text)>2) and (StrToInt(FMain.EdInput.Text)<2130)) then

showmessage('Введите целое число от 2 до 2130')

else

begin

chis:=masProst[1];

for i:=2 to 320 do

begin

if masProst[i]<StrToInt(EdInput.Text) then

begin

if kolich1(DecToBin(IntToStr(chis)))<kolich1(DecToBin(IntToStr(masProst[i]))) then chis:=masProst[i];

end

else

break;

end;

LbOutput.Caption:='Простое максимальное число с максимальным количеством единиц в двоичном коде = '+IntToStr(chis);

Lb2.Caption:='Двоичный вид числа = '+DecToBin(IntToStr(chis));

end;

end;

procedure TFMain.BtClearClick(Sender: TObject);

begin

EdInput.Text:='';

LbOutput.Caption:='Простое максимальное число с максимальным количеством единиц в двоичном коде =';

Lb2.Caption:='Двоичный вид числа =';

end;

end.

Задание №2 (Delphi)

Для заданной матрицы размером 10*10 найти такие k, что k-я строка матрицы совпадает с k-м столбцом.

Код программы

Unit UnMain;

Interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

type

TFMain = class(TForm)

LbYsl: TLabel;

SGMatr: TStringGrid;

BtWork: TButton;

BtVvod: TButton;

BtAuto: TButton;

LbOtvet: TLabel;

BtCancel: TButton;

procedure FormCreate(Sender: TObject);

procedure BtAutoClick(Sender: TObject);

procedure BtCancelClick(Sender: TObject);

procedure BtVvodClick(Sender: TObject);

procedure BtWorkClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

function CheckValue(s:string):boolean; {функция возвращает значение True, если строка S состоит из чисел (0-9)}

function CheckLength(s:string):boolean; {функция возвращает значение True, если в строке S кол-во символов не больше N}

var

FMain: TFMain;

mas: array [1..10, 1..10] of integer;

implementation

{$R *.dfm}

procedure TFMain.FormCreate(Sender: TObject);

var

i:integer;

begin

for i:=1 to 10 do

begin

SGMatr.Cells[i,0]:=IntToStr(i);

SGMatr.Cells[0,i]:=IntToStr(i);

end;

end;

procedure TFMain.BtAutoClick(Sender: TObject);

var

i,j:integer;

begin

Randomize;

for i:=1 to 10 do

for j:=1 to 10 do

begin

mas[i,j]:=random(9)+1;

SGMatr.Cells[j,i]:=IntToStr(mas[i,j]);

end;

BtAuto.Enabled:=false;

BtVvod.Enabled:=false;

BtCancel.Enabled:=true;

BtWork.Enabled:=true;

SGMatr.Enabled:=false;

end;

procedure TFMain.BtCancelClick(Sender: TObject);

var

i,j:integer;

begin

for i:=1 to 10 do

for j:=1 to 10 do

SGMatr.Cells[j,i]:='';

BtAuto.Enabled:=true;

BtVvod.Enabled:=true;

BtCancel.Enabled:=false;

BtWork.Enabled:=false;

SGMatr.Enabled:=true;

LbOtvet.Caption:='Строка\ Столбец\ Число\; ';

end;

function CheckValue(s:string):boolean; {функция возвращает значение True, если строка S состоит из чисел (0-9)}

var

i:integer;

begin

try

for i:=1 to Length(s) do

if (Copy(s,i,1)='0') or (Copy(s,i,1)='1') or (Copy(s,i,1)='2') or (Copy(s,i,1)='3') or (Copy(s,i,1)='4') or (Copy(s,i,1)='5') or (Copy(s,i,1)='6') or (Copy(s,i,1)='7') or (Copy(s,i,1)='8') or (Copy(s,i,1)='9') then

result:=true

else

begin

result:=false;

break;

end;

finally

end;

end;

function CheckLength(s:string):boolean; {функция возвращает значение True, если в строке S кол-во символов не больше N}

const N=2;

begin

if Length(S)<=N then

result:=true

else

result:=false;

end;

procedure TFMain.BtVvodClick(Sender: TObject);

var