![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
FENIX |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 45 Пол: Мужской Репутация: ![]() ![]() ![]() |
Одно из заданий лабы:
На экране построить N произвольных окружностей (можно использовать функцию Random), допускается их пересечение. Окружности, не пересекающиеся ни с какой другой окружностью, выделить другим цветом или штриховкой. Определить их количество. Не могу найти подходящий алгоритм для выполнения выделенной части. Вот процедура рисования :low: Код Procedure graphic; var grDriver, grMode, ErrCode, x, y, n : integer; Begin ClrScr; write('BBEDUTE N= '); readln(n); grDriver:=Detect; InitGraph(grDriver, grMode, 'A:\'); ErrCode:=GraphResult; If ErrCode = grOk then begin x := GetMaxX div 2; y := GetMaxY div 2; Repeat {SetColor(succ(Random(white)));} SetColor(White); SetLineStyle(0,0,2*Random(2)+1); x := Random(GetMaxX); y := Random(GetMaxY); Circle(x, y, Random(GetMaxY div 5)); Dec(N); Until N=0; If ReadKey=#0 then x := ord(ReadKey); ReadLn; CloseGraph; end else WriteLn('System failure: Matrix Reloaded :D', GraphErrorMsg(ErrCode)); |
![]() ![]() |
Altair |
![]()
Сообщение
#2
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
![]() ------------------------ ладно.... есть много способов... например так: Код Uses Graph,CRT; Const NN=100; Var A:Array[1..nn] of record x,y,r:longint; col:byte end; Gd,gm:integer; n,i,j:longint; color:byte; Begin readln(n); randomize; for i:=1 to n do {генерируем случайные окружности} begin a[i].x:=random(640); a[i].y:=random(480); a[i].r:=random(300); end; {*** ЗДЕСЬ ИЩЕМ ВСЕ ПАРЫ ОКРУЖНОСТЕЙ И ПРОВЕРЯЕМ ПЕРЕСЕКАЮТСЯ ИЛИ НЕТ, И В ЗАВИСИМОВТИ ОТ ЭТОГО ЦВЕТ ВЫДЕЛЯЕМ!!!} readkey; GD:=detect; initgraph(gd,gm,''); {А ТЕПЕРЬ ВЫВОДИМ ВСЕ ОКРУЖНОСТИ НА ЭКРАН} For i:=1 to n do begin setcolor(a[i].col); circle(a[i].x,a[i].y,a[i].r)end; readkey; end. -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 13:57 |