Cats

Пример страницы со сценарием

воскресенье, 27 декабря 2009 г.

Лабораторная раброта 7.


.Цель: Разработать алгоритм и программу решения прикладной задачи – умножение мартиц.

Задача: Умножить матрицу А с размерностью m × n на матрицу В с размерностью n × l .
const
n=3;
m=3;
Type
Massiv= array [1..m,1..n] of integer;
var
M1,M2,M3:Massiv;
i,j,k:integer;
a,b:integer;
begin
randomize;
For i:=1 to m do
For j:=1 to n do begin
M1[i,j]:=Random(4);
M2[i,j]:=Random(4);
end;
for i:=1 to m do
for j:=1 to n do begin
M3[i,j]:=0;
for k:=1 to n do
M3[i,j]:=M3[i,j]+M1[i,k]*M2[k,j];
end;
Image1.canvas.Rectangle(0,0,Image1.Width,Image1.Height);

a:=Trunc(Image1.Width/10);
b:=Trunc(Image1.Height/10);
For i:=1 to m do
For j:=1 to n do begin
Image1.canvas.Rectangle(a*j,b*i,(a*j)+a,(b*i)+b);
Image1.Canvas.TextOut( a*j,b*i,IntToStr(M1[i,j]));
end;
For i:=1 to m do
For j:=1 to n do begin
Image1.canvas.Rectangle((a*j)+230,b*i,((a*j)+a)+230,(b*i)+b);
Image1.Canvas.TextOut((a*j)+230,b*i,IntToStr(M2[i,j]));
end;
For i:=1 to m do
For j:=1 to n do begin
Image1.canvas.Rectangle((a*j)+150,b*i+200,((a*j)+a)+150,((b*i)+b)+200);
Image1.Canvas.TextOut((a*j)+150,b*i+200,IntToStr(M3[i,j]));
end;
end;
 

пятница, 25 декабря 2009 г.

Лабораторная Работа №6






var
Form1: TForm1;

a, b, x, s, i, n, h, t,y,rX,rY:Real;

implementation

{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);


begin

Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);

a := -5;
b := 5;
n := 30;
h := (b - a) / n;
x:=a;
y:=sin(x);
rX:= Image1.Width / (b -a);
rY:= Image1.Height / (b -a);
Image1.Canvas.MoveTo(0, Trunc(Image1.Height/2 - (y)*rY));
Image1.Canvas.Brush.Style:=bsClear;
x:=x+h;
While x<=b+h do Begin y:= sin(x); Image1.Canvas.Pen.Color := clBlack; Image1.Canvas.LineTo(Trunc((x - a)*rX),Trunc(Image1.Height/2 - (y)*rY)); Image1.Canvas.Pen.Color := clRed; Image1.Canvas.Rectangle(Trunc((x - h - a)*rX), Trunc(Image1.Height/2), Trunc((x - a)*rX) , Trunc(Image1.Height/2 - (y)*rY)); x:=x+h; end; Image1.Canvas.Pen.Color := clBlack; Image1.Canvas.MoveTo(0,Trunc(Image1.Height/2)); Image1.Canvas.LineTo(Image1.Width,Trunc(Image1.Height/2)); Image1.Canvas.MoveTo(Trunc(Image1.Width/2),0); Image1.Canvas.LineTo(Trunc(Image1.Width/2),(Image1.Height));

end;





четверг, 24 декабря 2009 г.

пятница, 27 ноября 2009 г.

ЛАБОРАТОРНАЯ РАБОТА№5

Построение правильного многоугольника.
Задача : Построить правильный n -угольник, количество углов которого задано и вводиться через пользовательский интерфейс.

var N,X0,Y0,i:Integer;
angle,cangle,R,x,y:Real;
begin
N:=StrToInt(Edit1.Text);
R:=Image1.Width/4;


Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);

angle:=360/N;
X0:=Trunc(R);
Y0:= Trunc(cos(0*Pi/180)*R+R);


Image1.Canvas.MoveTo(X0,Y0);

For i:=1 to N do
Begin

cangle:=cangle+angle;
x:=sin(cangle*Pi/180)*R;
y:=cos(cangle*Pi/180)*R;
Image1.Canvas.LineTo(Trunc(x+R),Trunc(y+R));
end;

пятница, 6 ноября 2009 г.

ЛАБОРАТОРНАЯ РАБОТА № 4.

Движение тела,брошенного под углом к горизонту.

Задача: Изобразить местонахождение тела, брошенного с земли с начальной скорость U0 под углом к горизонту α, через равные интервалы времени ( N – число равных временных интервалов)

Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
t:=0;
U:=StrtoInt(Edit1.Text);
angle:=StrtoInt(Edit2.Text);
U0X:=U * cos(Pi*angle/180);
U0Y:=U * sin(Pi*angle/180);

tp:=(2 * U0Y)/Grav;
sh:=tp/StrtoInt(Edit3.Text);

Form1.Caption := FloattoStr(tp);
Xmax:= (U * U) /Grav;
Ymax:= (U * U)/ (Grav * 2);
kx:= Image1.Width/Xmax;
ky:= Image1.Height/Ymax;

while t<=tp do
Begin
x:=Round(U0X * t);
y:=Round(U0Y * t - ((Grav*(t * t))/2));
Xe:=(x * Kx)+1;
Ye:=((Ymax - y)* Ky)+1;
Image1.Canvas.Ellipse(Trunc(Xe-1),Trunc(Ye-1),Trunc(Xe+1),Trunc(Ye+1));
t:=t+sh;

пятница, 9 октября 2009 г.

пятница, 2 октября 2009 г.

ЛАБОРАТОРНАЯ РАБОТА № 3.


Цель: Разработать алгоритм и программу решения прикладной задачи – построение графика заданной функции. Научиться переводить декартовые координаты в экранные.

Задача : Построить график функции y = Ax2 + Bx + C в диапазоне ( x min , y min ) – ( x max , y max ). Постоянные А, В, С, x min , y min , x max , y max вводятся через пользовательский интерфейс.



var
Form1: TForm1;

a,b,c,N,Xmin,Ymin,Xmax,Ymax,i,xe1,ye1:integer;
dx,y,xe,ye,ky,kx,x:real;
implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin


begin
a:=StrToInt(Edit6.Text);
b:=Strtoint(Edit7.Text);
c:=Strtoint(Edit8.Text);

Xmin:=Strtoint(Edit1.Text);
Ymin:=Strtoint(Edit2.Text);

Xmax:=Strtoint(Edit4.Text);
Ymax:=Strtoint(Edit3.Text);

N:=Strtoint(Edit5.Text);

dx:=(Xmax-Xmin)/N;

kx:=Width/(Xmax-Xmin);
ky:=Height/(Ymax-Ymin);

x:=Xmin;
while x<=xmax do begin y:=a*x*x+b*x+c; xe:=(x-Xmin)*kx; ye:=(y-Ymin)*ky; xe1:=Trunc(xe); ye1:=Trunc(ye); Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height); Image1.Canvas.Ellipse(xe1,ye1,5,5); x:=x+dx; end; end;

ЛАБОРАТОРНАЯ РАБОТА 2

Работа с графикой в среде Lazarus.
Задача 2:
Создать программу рисующую треугольник, координаты вершин которого можно изменять через пользовательский интерфейс.
Задача 1: Нарисовать в объекте TImage треугольник, одна сторона которого черная, другая красная и третья - синяя.





procedure TForm1.Button1Click(Sender: TObject);
var x1,y1,x2,y2,x3,y3:integer;
begin
Image1.Canvas.Rectangle(0,0,Image1.Width,Image1.Height);
x1:=StrToInt(Edit1.Text);
y1:=StrToInt(Edit2.Text);
x2:=StrToInt(Edit3.Text);
y2:=StrToInt(Edit4.Text);
x3:=StrToInt(Edit5.Text);
y3:=StrToInt(Edit6.Text);
Image1.Canvas.Pen.Color:= clBlue ;

Image1.Canvas.MoveTo(x1,y1);
Image1.Canvas.LineTo(x2,y2);
Image1.Canvas.Pen.Color:= clred ;

Image1.Canvas.LineTo(x3,y3);
Image1.Canvas.Pen.Color:= clGreen ;

Image1.Canvas.LineTo(x1,y1);

end;