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

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

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

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


Гость






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

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


Гость






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

Как чертить прямые и окружности - см. Help на Line/Circle
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






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

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


Гость






А как начертить симметричную окружность???
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 




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