- •2.1. Блок-схема алгоритму………………………………………………...…11
- •3.1. Текст програми на Pascal…...…………………………………………...18
- •Завдання №1.
- •Блок-схема алгоритму.
- •Текст програми на Qbasic.
- •Результат роботи програми на Qbasic.
- •Завдання №2.
- •2.1. Блок-схема алгоритму.
- •2.2. Текст програми на Pascal.
- •2.3. Результат роботи програми на Pascal.
- •Завдання №3.
- •3.1. Текст програми на Pascal .
- •3.2. Результат роботи програми на Pascal .
- •3.3. Текст програми на Qbasic .
- •3.4. Результат роботи програми на Qbasic .
- •Висновки
- •Список використаних джерел
Завдання №1.
Скласти блок-схему і програму табулювання функції з перевіркою її на існування і виведення на екран координат графіка функції, використовуючи масштабування. Значення коефіцієнтів - випадкові числа, певного значення.
Функція:
Значення коефіцієнтів: х [-10; 10] , а [-20; 20]
Блок-схема алгоритму.
Текст програми на Qbasic.
CLS
SCREEN 12
cv = 8
LINE (300, 200)-(600, 200), cv
LINE (450, 50)-(450, 350), cv
LINE (590, 195)-(600, 200), cv
LINE (590, 205)-(600, 200), cv
LINE (445, 60)-(450, 50), cv
LINE (455, 60)-(450, 50), cv
FOR dx = 300 TO 595 STEP 10
LINE (dx, 200 - 2)-(dx, 200 + 2), cv
NEXT dx
FOR dy = 50 TO 350 STEP 10
LINE (450 - 1, dy)-(450 + 1, dy), cv
NEXT dy
RANDOMIZE TIMER
a = INT(40 * RND) - 20
PRINT "a="; a
x = -10
PRINT " x y"
WHILE x < 10
b = a * x * (1 + COS(2 * x))
c = ((a - x) * (1 + COS(x)))
IF b > 0 AND c <> 0 THEN
k = SQR(b)
y = (x * x) * (k / c)
PRINT USING " ### #####.##"; x; y
ELSE
PRINT " "; x; " ne sushestvyet"
END IF
x = x + 1
WEND
x = -10
WHILE x < 10
b = a * x * (1 + COS(2 * x))
IF b > 0 AND c <> 0 THEN
k = SQR(b)
y = (x * x) * (k / c) * (-1)
LINE (450 + x1 * 10, y1 / 20 + 200)-(450 + x * 10, y / 20 + 200), 4
x1 = x
y1 = y
END IF
x = x + .05
WEND
END
Результат роботи програми на Qbasic.
Завдання №2.
Визначити належність точок, що задані випадковими координатами, заштрихованій області або її межі. На екрані відобразити таблицю з координатами і графічне вікно, що демонструє малюнок розташування точок або діаграму співвіднесення кількості точок в області, за зовнішньою межею, у внутрінній не заштрихованій області на межі.
Данні про фігуру:
R=16
Кількість точок =16
2.1. Блок-схема алгоритму.
2.2. Текст програми на Pascal.
uses crt,graph;
const
POINTS = 16;
R = 16;
var gd,gm:integer;
x,y,xg,yg,xs,ys,xt,yt,i,pologenie:integer;
v:array [0..2] of integer;
strx,stry, pol:string;
m:single;
Procedure risuemCoordinate(x,y:integer; m:single);
var size:integer;
begin
size:=round((r+10)*m);
line(x-size,y,x+size,y);
line(x,y-size,x,y+size);
line(x+size,y,x+size-5,y-5);
line(x+size,y,x+size-5,y+5);
line(x,y-size,x+5,y-size+5);
line(x,y-size,x-5,y-size+5);
end;
Procedure risuemFigure(x,y:integer;m:single);
var s,c:integer;
begin
s:=round(r*m);
setfillstyle(3,8); {второе число цвет закраски, первое стиль}
pieslice(x,y,0,135,round(R*m));
pieslice(x,y,225,360,round(R*m));
line(x-s,y+s,x+s,y-s);
line(x-s,y-s,x+s,y+s);
outtextxy(x+s+5,y-s,'y=x');
outtextxy(x-s,y-s-10,'y=-x');
end;
procedure risuemgistogramm(x,y:integer; v:array of integer);
const s:array[0..2] of string = ('попадает','на границе','за пределами');
var w,h,wf,i,sum:integer;
vs:string;
begin
w:=300;
h:=150;
sum:=v[0]+v[1]+v[2];
wf:=(w div 3);
rectangle(x,y,x+w,y+h);
for i:=0 to 2 do begin
setfillstyle(1,i*2+2);
bar(x+i*wf+20,y+h,x+wf*i+(wf-20),y+h-round((h/sum)*v[i]));
str(v[i],vs);
outtextxy(x+i*wf+40,y+h-round((h/sum)*v[i])-10,vs);
outtextxy(x+i*wf+10,y+h,s[i]);
end;
end;
function popadaet(x,y:integer):integer;
begin
if (R*R>x*x+y*y) and ((x>0)or(abs(y)>abs(x))) then popadaet:=-1
else if ((R*R=x*x+y*y) and ((x>=0)or(abs(y)>abs(x))))
or ((R*R>x*x+y*y) and (x<=0) and (abs(x)=abs(y))) then popadaet:=0
else popadaet:=1;
end;
begin
Gd:=detect;
InitGraph(Gd, Gm, '');
If GraphResult <> grOk Then Halt(0);
Randomize;
{=====================}
m:=5;
xs:=150;
ys:=200;
xt:=350;
yt:=50;
xg:=320;
yg:=240;
v[0]:=0;v[1]:=0;v[2]:=0;
setcolor(15);
outtextxy(xt,yt-3,'Таблица координат');
setcolor(4);
risuemFigure(xs,ys,m);
setcolor(7);{цвет крестика}
risuemCoordinate(xs,ys,m);
{рисуем точки}
for i:=1 to POINTS do begin
x:=random(r*2)-r;
y:=random(r*2)-r;
x:=-5;y:=1;
setcolor(15);
CIRCLE(xs+round(x*m),ys+round(y*m),1);
pologenie:=popadaet(x,y);
setcolor(15);
str(x,strx);str(y,stry);
outtextxy(xt,yt+10*i,'x='+strx);
outtextxy(xt+50,yt+10*i,'y='+stry);
if pologenie<0 then begin
outtextxy(xt+100,yt+10*i ,'Поподает');
v[0]:=v[0]+1;
end else if pologenie=0 then begin
outtextxy(xt+100,yt+10*i,'На границе');
v[1]:=v[1]+1;
end else if pologenie>0 then begin
outtextxy(xt+100,yt+10*i,'За областью');
v[2]:=v[2]+1;
end;
end;
risuemGistogramm(xg,yg,v);
readkey;
CloseGraph;
end.
