Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2010, 21:39   #1
katena1
Новичок
Джуниор
 
Регистрация: 29.03.2010
Сообщений: 1
По умолчанию пересекающиеся окружности

Помогите пожалуйста, здать надо завтро =(

вот задание:Вводятся координаты центра и радиусы двух окружностей. Определить размер проекции на оси Х и У только второй окружности.
написать программу на любом языке.

архив проги со всеми файлами 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;


зы спасибо заранее =-)
Вложения
Тип файла: zip 10.zip (829.2 Кб, 5 просмотров)
katena1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на окружности Ozerich Помощь студентам 10 14.02.2010 04:27
Дивижение окружности по окружности Irina8340 Помощь студентам 10 13.05.2009 20:25
движение окружности по окружности MyQwErTy Помощь студентам 13 04.11.2008 22:52
Касательные к окружности Dublin Мультимедиа в Delphi 3 21.10.2008 20:52
Текст в окружности. Adamant Свободное общение 4 27.09.2008 09:58