| milka904 | Дата: Пятница, 25.05.2012, 21:57 | Сообщение # 1 |
|
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| исходная задача в для напсиания в турбо паскале:ввести 3 длины сторон трегольника по ним построить трегольник и вписать в него окружность.
Program Grafika uses Graph,crt; var a,b,c,x0,y0,r,x1,y1,x2,y2,x3,y3,xc,yc,dx,dy,d1,d2,ba:longint; gd,gm,k:integer; m,x,h,s:real;
procedure vvod; begin repeat writeln('Vvedite dliny storon a,b,c:'); readln(a,b,c); if(a>=b+c)or(b>=a+c)or(c>=a+b) then writeln('Ne treugolnik, povtorite vvod'); until(a<b+c)and(b<a+c)and(c<a+b);{проверим что это именно длины сторон треугольника} end; procedure raschety; begin gd:=0; initgraph(gd,gm,''); x0:=240 div 2;{центр экрана} y0:=320 div 2; x:=(a*a+b*b-c*c)/(2*a);{пусть сторона А основание, найдем длину отрезка от левого края до основания высоты} h:=sqrt(b*b-x*x);{вычислим длину высоты} m:=(y0-40)/(h/2);{масштаб если высота больше половины длины основания} if (x0-60)/(a/2)<m then m:=(x0-60)/(a/2);{или наоборот} {координаты основания} y1:=y0+round(h*m/2);{по вертикали ниже центра} y2:=y1; {на половину высоты} x1:=x0-round(a*m/2);{по горизонтали} x2:=x0+round(a*m/2);{влево и вправо на половину основания} {координаты вершины} x3:=x1+round(x*m);{по горизонтали по основанию высоты} y3:=y0-round(h*m/2);{по вертикали выше центра на половину высоты} setcolor(12);{рисуем треугольник} line(x1,y1,x2,y2); line(x2,y2,x3,y3); line(x1,y1,x3,y3); s:=a*h/2;{площадь треугольника} r:=2*round(s*m/(a+b+c));{радиус вписанной окружности} d1:=round(a*b*m/(b+c));{длина отрезка от левого конца основания до основания бисектрисы на эту сторону} dx:=x1+d1;{координата X основания биссектрисы} dy:=y1;{координата Y} ba:=round(sqrt(sqr(x3-dx)+sqr(y3-dy)));{длина биссектрисы} d2:=round(ba*d1/(d1+b*m));{длина части биссектрисы от основания до точки пересечения биссектрис} xc:=dx+round((x3-dx)*d2/ba);{координаты центра вписанной окружности} yc:=dy+round((y3-dy)*d2/ba); end; procedure ris; begin setcolor(14);{рисуем окружность} circle(xc,yc,r); readln; end; begin clrscr; repeat vvod; raschety; ris; until (k=0); end. Помогите пожалуйста!!!!!!!!!!
|
| |
|
|
| diamFC | Дата: Пятница, 25.05.2012, 22:56 | Сообщение # 2 |
|
Полковник
Группа: Администраторы
Сообщений: 207
Статус: Offline
| Программа сделана с помощью diamFC
|
| |
|
|
| milka904 | Дата: Суббота, 26.05.2012, 07:46 | Сообщение # 3 |
|
Рядовой
Группа: Пользователи
Сообщений: 2
Статус: Offline
| спасибо большоооеее!!!!!
|
| |
|
|