Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОАиП кр1 в4

.doc
Скачиваний:
9
Добавлен:
01.04.2014
Размер:
503.81 Кб
Скачать

Лабораторная работа №1

4.

При x=0.4104, y=-0.875, z=-0.47510-3 s=1.9873.

unit KW1;

interface

uses

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

Dialogs, StdCtrls, Math;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Memo1: TMemo;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:='0,4e4'; //ввод начального значения х

Edit2.Text:='-0,875'; //ввод начального значения y

Edit3.Text:='-0,475e-3'; //ввод начального значения Z

end;

procedure TForm1.Button1Click(Sender: TObject);

var

x,y,z,a,b,c,s : extended;

begin

Memo1.Clear; // очистка окна вывода Memo1

x:=StrToFloat(Edit1.Text);

y:=StrToFloat(Edit2.Text);

z:=StrToFloat(Edit3.Text);

a:=Abs(Cos(x)-Cos(y));

b:=1+2*Power(Sin(y),2);

c:=1+z+Power(z,2)/2+Power(z,3)/3+Power(z,4)/4;

s:=Power(a,b)*c;

Memo1.Lines.Add('Result s='+FloatToStrF(s,ffFixed,7,4));

end;

end.

Лабораторная работа №2

4.

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls, Math;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

RadioGroup1: TRadioGroup;

Button1: TButton;

Memo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:='2'; Edit2.Text:='5,6'; Memo1.Clear;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

x,y,f,s : extended;

begin

Memo1.Clear;

x:=StrToFloat(Edit1.Text);

y:=StrToFloat(Edit2.Text);

case RadioGroup1.ItemIndex of

0 : f:=Cos(x);

1 : f:=Sqr(x);

2 : f:=Sin(x);

end;

if (f>y) then s:=Power(f,3)+ArcTan(x*y)

else

if (f<y) then s:=Power(y,3)+ArcTan(x)

else s:=Power(y+Sqrt(x),3)+0.5;

Memo1.Lines.Add('Result S='+FloatToStrF(s,ffFixed,8,3));

end;

end.

Лабораторная работа №3

4.

4

0.1

1

200

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Math;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Button1: TButton;

Memo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Memo1.Clear;

Edit1.Text:='0,1';

Edit2.Text:='1';

Edit3.Text:='200';

end;

procedure TForm1.Button1Click(Sender: TObject);

var k,n : integer;

Xn,Xk,x,y,a,s : extended;

begin

Memo1.Clear;

Xn:=StrToFloat(Edit1.Text);

Xk:=StrToFloat(Edit2.Text);

n:=StrToInt(Edit3.Text);

x:=Xn;

s:=0;

repeat

for k:=1 to n do begin

a:=Power(-1,k)*Power(x,2*k)/(2*k);

s:=s+a;

end;

y:=Cos(x);

Memo1.Lines.Add('при x='+FloatToStrF(x,ffFixed,8,4)+' y='+FloatToStrF(y,ffFixed,8,4)+

' s='+FloatToStrF(s,ffFixed,8,4));

x:=x+(Xk-Xn)/n;

until(x>Xk+Xn/2);

end;

end.

Лабораторная работа №4

4. Задан двухмерный массив целых чисел A размером M на N. Найти произведение элементов, расположенных ниже побочной диагонали.

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Grids;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Button1: TButton;

StringGrid1: TStringGrid;

Button2: TButton;

Memo1: TMemo;

Label1: TLabel;

Label2: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

type

TMas = array[1..10,1..10] of integer;

var

Form1: TForm1;

A : TMas; // Объявление двухмерного массива

n, m : integer;

i, j : integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Memo1.Clear;

n:=4; // Число строк в массиве

m:=4; // Число столбцов в массиве

Edit1.Text:='4';

Edit2.Text:='4';

StringGrid1.Cells[0,0]:='A';

for i:=1 to n do StringGrid1.Cells[0,i]:='i='+IntToStr(i);

for j:=1 to m do StringGrid1.Cells[j,0]:='j='+IntToStr(j);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

n:=StrToInt(Edit1.Text); // Число строк в массиве

m:=StrToInt(Edit2.Text); // Число столбцов в массиве

{Задание числа строк и столбцов в таблице}

StringGrid1.RowCount:=N+1;

StringGrid1.ColCount:=M+1;

for i:=1 to n do StringGrid1.Cells[0,i]:='i='+IntToStr(i);

for j:=1 to m do StringGrid1.Cells[j,0]:='j='+IntToStr(j);

end;

procedure TForm1.Button2Click(Sender: TObject);

var p : integer;

begin

Memo1.Clear;

{Заполнение массива А элементами из таблицы StringGrid1}

for i:=1 to n do

for j:=1 to m do

A[i,j]:=StrToInt(StringGrid1.Cells[j,i]);

{Расчет}

p:=1;

for i:=1 to n do

for j:=1 to m do

if (i>=-j+n+2) and (j>=-i+m+2) then

p:=p*A[i,j];

{ Вывод результата }

Memo1.Lines.Add('Произведение элементов расположенных ниже побочной диагонали при условии, что диагональ в расчете не участвует : '

+IntToStr(p));

end;

end.

Лабораторная работа №5

4. Определить, является ли заданная матрица N-го порядка магическим квадратом, т.е. такой, в которой сумма элементов во всех строках и столбцах одинакова.

unit pp;

interface

type TMas = array[1..10, 1..10] of integer;

Procedure Matric(A : TMas; n,m : integer; var s,cv,ch,v,h : integer);

implementation

Procedure Matric(A : TMas; n,m : integer; var s,cv,ch,v,h : integer);

var i,j : integer;

begin

h:=0;

v:=0;

ch:=0;

cv:=0;

for i:=1 to n do begin

ch:=ch+A[i,1];

end;

for j:=1 to m do begin

cv:=cv+A[1,j];

end;

j:=1;

repeat

v:=0;

for i:=1 to n do begin

v:=v+A[i,j];

if (v=cv) then

s:=s+1;

end;

j:=j+1;

until (j>=m);

i:=1;

repeat

h:=0;

for j:=1 to m do begin

h:=h+A[i,j];

if (h=ch) then

s:=s+1;

end;

i:=i+1;

until (i>=n);

end;

end.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Math, pp;

type

TForm1 = class(TForm)

Edit1: TEdit;

Edit2: TEdit;

Label1: TLabel;

Label2: TLabel;

StringGrid1: TStringGrid;

Button1: TButton;

Button2: TButton;

Memo1: TMemo;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

A : TMas;

n,m : integer;

i,j : integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

Memo1.Clear;

n:=4;

m:=4;

Edit1.Text:='4';

Edit2.Text:='4';

StringGrid1.Cells[0,0]:='A';

for i:=1 to n do StringGrid1.Cells[0,i]:='i='+IntToStr(i);

for j:=1 to m do StringGrid1.Cells[j,0]:='j='+IntToStr(j);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

n:=StrToInt(Edit1.Text);

m:=StrToInt(Edit2.Text);

{Задание числа строк и столбцов в таблице}

StringGrid1.RowCount:=N+1;

StringGrid1.ColCount:=M+1;

for i:=1 to n do StringGrid1.Cells[0,i]:='i='+IntToStr(i);

for j:=1 to m do StringGrid1.Cells[j,0]:='j='+IntToStr(j);

end;

procedure TForm1.Button2Click(Sender: TObject);

var h,ch,v,cv,s : integer;

begin

Memo1.Clear;

{Заполнение массива А элементами из таблицы StringGrid1}

for i:=1 to n do

for j:=1 to m do

A[i,j]:=StrToInt(StringGrid1.Cells[j,i]);

{ras4et}

Matric(A,n,m,s,cv,ch,v,h);

Memo1.Lines.Add('Количество строк совпавших с основными(cv,ch) = '+IntToStr(s));

Memo1.Lines.Add('Сумма основной строки горизонтали ch = '+IntToStr(ch));

Memo1.Lines.Add('Сумма основной строки вертикали cv = '+IntToStr(cv));

Memo1.Lines.Add('Сумма последней сравниваемой горизонтальной строки v = '+IntToStr(v));

Memo1.Lines.Add('Сумма последней сравнимаемой вертикальной строки h = '+IntToStr(h));

{ Вывод результата }

if (s=m+n-2)then

Memo1.Lines.Add('Результат: Квадрат магический')

else

Memo1.Lines.Add('Результат: Квадрат не магический');

end;

end.