IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Графика
-max-
сообщение 30.03.2006 12:03
Сообщение #1


Гость






Помогите решить:

Дано три целых числа, определяющих положение центра окружности на экране и ее радиус. Если окружность не пересекает горизонтальную прямую, проходящую через середину экрана, то высветить данную окружность и окружность, симметрическую данной относительно этой прямой.
 К началу страницы 
+ Ответить 
volvo
сообщение 30.03.2006 13:10
Сообщение #2


Гость






В чем проблема? Не знаешь, как определить, пересекаются ли прямая и окружность? Ничего проще: если координата Y центра окружности строго меньше чем ((GetMaxY div 2) - R) или строго больше, чем ((GetMaxY div 2) + R), то окружность и прямая НЕ пересекаются.

Как чертить прямые и окружности - см. Help на Line/Circle
 К началу страницы 
+ Ответить 
-max-
сообщение 16.04.2006 18:30
Сообщение #3


Гость






Помогите доделать задачу:

Дано три целых числа, определяющих положение центра окружности на экране и ее радиус. Если окружность не пересекает горизонтальную прямую, проходящую через середину экрана, то высветить данную окружность и окружность, симметрическую данной относительно этой прямой.


Код
uses crt, graph;
var
driver, mode,error: integer;
x,y,r:word;
begin
writeln('vvedit x,y,r');
readln(x,y,r);
begin
driver:=detect;
initgraph(driver, mode, 'c:\tp\bp\bgi');
error:=graphresult;
line(0,240,640,240);
circle(x,y,r);
if y<((getmaxy div 2)-r) then
circle(x,y,r);
if y>((getmaxy div 2)+r) then
circle(x,y,r);
closegraph;
readln;
end;
end.
 К началу страницы 
+ Ответить 
volvo
сообщение 16.04.2006 18:41
Сообщение #4


Гость






Ты второй пост внимательно прочел? Я же написал: ИЛИ ... ИЛИ

if (y<((getmaxy div 2)-r)) OR (y>((getmaxy div 2)+r))
then { Начертить симметричную окружность }
 К началу страницы 
+ Ответить 
Гость
сообщение 16.04.2006 18:48
Сообщение #5


Гость






А как начертить симметричную окружность???
 К началу страницы 
+ Ответить 
Бравый генерал
сообщение 16.04.2006 21:31
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 39
Пол: Мужской
Реальное имя: Василий

Репутация: -  -2  +


Uses
Graph;

Var
gd,gm,x,y,r,d: Integer;

Begin
WriteLn('Vvedite x,y,r: ');
ReadLn(x,y,r);

gd:=Detect;
InitGraph(gd, gm, 'c:\tp\bp\bgi');

line(0, GetMaxY div 2, GetMaxX, GetMaxY div 2);
Circle(x,y,r);

d:=y - (GetMaxY div 2);
if abs(d) >= r
then Circle(x, (GetMaxY div 2) - d, r);

ReadLn;
CloseGraph
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 7:02
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"