Помогите пожалуйста, здать надо завтро =(
вот задание:Вводятся координаты центра и радиусы двух окружностей. Определить размер проекции на оси Х и У только второй окружности.
написать программу на любом языке.
архив проги со всеми файлами 900кб надеюсь не отнему у вас много траффика
http://narod.ru/disk/19211658000/10.zip.html
ошибки:
вне зависимости от того как расположены окружности
если первая окружность пересекается со второй на несколько едениц по икс или игрик или по икс и игрик то именно это количество едениц вычитается из проекции на оси, например если значения
х1-2
х2-2
у1-3
у2-2
р1-1
р2-1
и проекция но ось х у второй окружности = 0 в то время как должна быть равна двум, если
х1-2
х2-2
у1-2
у2-3
р1-1
р2-1
то все верно проекция но ось икс равна нулю
вот место в котором все косяки, так =):
rad1,rad2 радиусы соотв окружностей
Код:
if er>0 then messagedlg('Данные введены неверно!',mtError,[mbOk],0) else
begin
if ((r1-rad1)<(r3-rad2)) and ((r1+rad1)>(r3+rad2)) and ((r2+rad1)>(r4+rad2)) and ((r2-rad1)<(r4-rad2))
then begin ox:=0; oy:=0; end else
begin
if ((r1+rad1)>(r3-rad2)) and ((r1-rad1)<(r3-rad2)) then OX:=rad2*2-abs((r1+rad1)-(r3-rad2)) else
if ((r1-rad1)>=(r3-rad2)) and ((r1+rad1)<=(r3+rad2))and (rad2>rad1) then OX:= rad2*2-rad1*2 else
if ((r3+rad2)>(r1-rad1)) and ((r3+rad2)<(r1+rad1)) then OX:=rad2*2-abs((r3+rad2)-(r1-rad1)) else
if ((r3+rad2)<= (r1-rad1)) or ((r1+rad1)<=(r3-rad2)) then OX:=rad2*2 else
Ox:=0;
if ((r2+rad1)>(r4-rad2)) and ((r2-rad1)<(r4-rad2)) then Oy:=rad2*2-abs((r2+rad1)-(r4-rad2)) else
if ((r2-rad1)>=(r4-rad2)) and ((r2+rad1)<=(r4+rad2)) and (rad2>rad1) then Oy:= rad2*2-rad1*2 else
if ((r4+rad2)>(r2-rad1)) and ((r4+rad2)<(r2+rad1)) then Oy:=rad2*2-abs((r4+rad2)-(r2-rad1)) else
if ((r4+rad2)<= (r2-rad1)) or ((r2+rad1)<=(r4-rad2)) then Oy:=rad2*2 else
Oy:=0;
зы спасибо заранее =-)