Берілген деңгей үшбұрыш торабында квадрат түйін нүктелер торабының деңгей биіктігін есептеу алгоритмімен программасы

0

Студенттермен оқушыларды қолданбалы есептерді бағдарламалауға үйрету мақсатында  төмендегі есептің бағдарламасын және нәтижесін бердік. Бұл есеп геодезия және жер жұмыстарын жоспарлау есептерінде кездеседі.

Есептің қойылуы: Жазықтықта деңгей үшбұрыштар торабы  координаталарымен берілген, мүнда i —  үшбұрыш нөмері, j – төбелерінің нөмері және  әрбір   координаталы түйін нүктесі торап үшбұрыш торының біреуіне тиісті болған квадрат торабы берілген. Осы квадрат торабының әрбір түйін нүктесіне сәйкес   деңгей биіктігі zs[i,j] – табылсын, мүнда i – жол индексі  j — баған индексі.

Есепті шешу алгоритімі:

1 – қадам. Үшбұрыш саны ushs, торап үшбұрыштарының  төбелерінің координаталары — , квадрат торабының xos, yos – бастапқы нүкте координатасын, квадрат торабының jols, bags – жол және баған санын  setk – квадрат торабының қадамын енгізу.

2 – қадам. Кезектегі  нүкте тисті болған i –ші  үшбұрышты табу.

3 – қадам.  Табылған үшбұрышта xt=xs[i,j], yt=ys[i,j] және  x1=x[i,1], y1=y[i,1], z1=z[i,1],  x2=x[i,2], y2=y[i,2], z2=z[i,2],    x3=x[i,3], y3=y[i,3], z3=z[i,3], деп алып

zs[i,j]:=

формуламен түйін нүктесінің zs[i,j] деңгейінің мәнін табамыз. Мұнда

Егер табылған деңгей мәні соңғы түйін  нүкте деңгей мәні болса онда есптеу тоқтатылады,  әйтпесе басқару 2-қадамға беріледі.

program kvtor;  uses crt;

label 1,2,3;

var xt,yt,x1,y1,x2,y2,x3,y3:real;

zt1,zt2,zt3,z1,z2,z3:real;

xs,ys,zs:array [1..20,1..20] of real;

x,y,z:array [1..30,1..3] of real;

xos,yos,setk:real; ushs,jols,bags,i,j,k:integer;

a,b,c,d,zt:real;

begin clrscr;

write(‘ushs=’); readln(ushs);

for i:=1 to ushs do

for j:=1 to 3 do

begin

write( ‘x[‘,i,j,’]’,’y[‘,i,j,’]’,’z[‘,i,j,’]=’);

readln(x[i,j],y[i,j],z[i,j]);

end;

write(‘xos,yos=’); readln(xos,yos);

write(‘jols,bags=’); readln(jols,bags);

write(‘setk=’); readln(setk);

for i:=1 to jols do

for j:=1 to bags do

begin

xs[i,j]:=xos+setk*(j-1);

ys[i,j]:=yos+setk*(i-1);

end;

for i:=1 to jols do

begin writeln;

for j:=1 to bags do

write(xs[i,j]:9:2,ys[i,j]:8:2);

end;readkey;writeln;

for i:=1 to jols do

for j:=1 to bags do

begin xt:=xs[i,j]; yt:=ys[i,j];

for k:=1 to ushs do

begin

x1:=x[k,1]; y1:=y[k,1];z1:=z[k,1];

x2:=x[k,2]; y2:=y[k,2]; z2:=z[k,2];

x3:=x[k,3]; y3:=y[k,3]; z3:=z[k,3];

zt1:=(yt-y1)*(x2-x1)-(xt-x1)*(y2-y1);

zt2:=(yt-y2)*(x3-x2)-(xt-x2)*(y3-y2);

zt3:=(yt-y3)*(x1-x3)-(xt-x3)*(y1-y3);

if (zt1>0)and(zt2>0)and(zt3>0) then goto 1;

if (zt1<0)and(zt2<0)and(zt3<0) then goto 1;

if (zt1=0) or (zt2=0) or (zt3=0) then goto 1;

goto 3;

1: a:=y1*(z2-z3)-z1*(y2-y3)+y2*z3-y3*z2;

b:=z1*(x2-x3)-x1*(z2-z3)+z2*x3-z3*x2;

c:=x1*(y2-y3)-y1*(x2-x3)+x2*y3-x3*y2;

d:=x1*(y2*z3-y3*z2)+y1*(z2*x3-z3*x2)+z1*(x2*y3-x3*y2);

zt:=-(a*xt+b*yt-d)/c;

zs[i,j]:=zt;

3:end;end; write(‘        ‘);

for j:=1 to bags do write(xs[1,j]:8:2);writeln;

for i:=1 to jols do begin writeln; write(ys[i,1]:8:2);

for j:=1 to bags do

write(zs[i,j]:8:2);

end;

readkey;

end.

Құрылған бағдарламамен 1-ші суретте берілген есеп шешілді. Алынған нәтижелер бағдарламаның қойылған бас есепті дұрыс шешетіндігін көрсетті.

Бағдарламаны қосқанда 1 – суреттегі есепті шешу үшін     төмендегі мәліметтерді енгіземіз.

  1. Үшбұрыш санын енгізу ushs=8.
  2. Бірінші үшбұрыш координаталарын енгізу.

Осылайша кезектегі 1-суреттегі қалған жеті үшбұрыш координаталарын енгіземіз.

  1. Экранда xos, yos = 1 1  мәнін енгіземіз. Бұл квадрат деңгей торабы құрудың бастапқы нүктесінің координатасы.
  2. jols, bags=8 9 мәнін енгіземіз, яғни жол саны 8 ал баған саны 9 екендігі көрсетеді.
  3. setk=1 мәнін енгізу, қадам 1-ге теңдігін білдіреді. Осы мәліметтерден кейін бағдарлама 1-суреттегі квадрат торабының әрбір түйін нүктесі үшін биктік деңгейі z[i,j] мәнін есептеп береді. Алынған нәтиже 1-кестеде берілген.

1-кесте

y

x

1 2 3 4 5 6 7 8 9
1 25,43 26,29 27,14 28,00 28,40 28,80 29,20 26,60 30,00
2 26,10 26,95 27,74 28,19 28,60 29,00 29,40 29,92 30,67
3 26,76 27,48 27,93 28,37 28,80 29,20 29,83 30,58 31,33
4 27,22 27,67 28,11 28,56 29,00 29,75 30,50 31,25 32,00
5 28,04 28,53 28,97 29,42 29,85 30,25 31,00 31,75 32,50
6 28,79 29,36 29,83 30,28 30,70 31,10 31,50 32,25 33,00
7 29,54 30,11 30,68 31,14 31,50 31,95 31,35 32,75 33,50
8 30,29 30,86 31,43 32,00 32,40 32,80 33,20 33,60 34,00

 

 

ОСТАВЬТЕ ОТВЕТ