1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| Liba |
27.10.2004 19:57
Сообщение
#1
|
|
Гость |
Помогите решить 2 задачки.....очень надо....
1)Есть 3 окружности разных диаметров с разными центрами.Нужной найти все точки пересечения окружностей. 2)На плоскости хаотично расположены точки(n) нужно посторить минимальный многоугольник(не треугольник).Вывести результат координат и кол-во точек многоугольника. Заранее огромное спасибо!!!!! P.S.Я вообще не понимаю как это надо делать.... :p2: |
![]() ![]() |
| volvo |
28.10.2004 18:00
Сообщение
#2
|
|
Гость |
Только что прогнал программу в Дельфи - Код program Project1; {$APPTYPE CONSOLE} uses SysUtils; Type TPoint = Record x, y: Double; End; TCircle = Record x, y, r: Double; End; Const Epsilon = 0.001; n = 3; Var arrCircles: Array[1 .. n] Of TCircle; Var amount: Integer; { здесь хранятся координаты точек пересечения } InterPoint: Array[1 .. 2*n] Of TPoint; Function CircleIntersect( cr1, cr2: TCircle ): Integer; Var p1, p2: TPoint; q, a, b, c, D: Double; Dist: Double; Begin Dist := Sqrt( Sqr(cr2.x - cr1.x) + Sqr(cr2.y - cr1.y)); cr2.x := cr2.x - cr1.x; cr2.y := cr2.y - cr1.y; CircleIntersect := 0; If (Abs(Dist) < Epsilon) or (Dist > cr1.r + cr2.r) or (Dist < Abs(cr1.r - cr2.r)) Then Exit; CircleIntersect := 1; If Abs(Dist - (cr1.r + cr2.r)) < Epsilon Then Begin p1.x := (cr2.x * cr1.r) / Dist; p1.y := (cr2.y * cr1.r) / Dist; p1.y := p1.y + cr1.y; p1.x := p1.x + cr1.x; Inc(Amount); InterPoint[Amount] := p1; Exit End; If cr2.x = 0 Then Begin p1.y := (Sqr(cr2.y) + Sqr(cr1.r) - Sqr(cr2.r)) / (2 * cr2.y); p1.x := Sqrt(Sqr(cr1.r) - Sqr(p1.y)); p2.x := -p1.x; p2.y := p1.y; End Else Begin q := Sqr(cr1.r) - Sqr(cr2.r) + Sqr(cr2.x) + Sqr(cr2.y); a := 4 * (Sqr(cr2.y) + Sqr(cr2.x)); b := (-4) * cr2.y * q; c := Sqr(q) - 4 * Sqr(cr1.r) * Sqr(cr2.x); D := Sqr(b) - 4 * a * c; p1.y := ((-b + Sqrt(D))/(2*a)); p2.y := ((-b - Sqrt(D))/(2*a)); p1.x := ((Sqr(cr1.r) - Sqr(cr2.r) + Sqr(cr2.x) + Sqr(cr2.y) - 2*cr2.y*p1.y) / (2*cr2.x)); p2.x := ((Sqr(cr1.r) - Sqr(cr2.r) + Sqr(cr2.x) + Sqr(cr2.y) - 2*cr2.y*p2.y) / (2*cr2.x)); End; p1.y := p1.y + cr1.y; p2.y := p2.y + cr1.y; p1.x := p1.x + cr1.x; p2.x := p2.x + cr1.x; Inc(Amount); InterPoint[Amount] := p1; Inc(Amount); InterPoint[Amount] := p2; CircleIntersect := 2 End; Var i, j: Integer; Begin For i := 1 To n Do Begin WriteLn( 'Окружность #', i ); Write( 'X центра>' ); ReadLn(arrCircles[i].x); Write( 'Y центра>' ); ReadLn(arrCircles[i].y); Write( 'Радиус>' ); ReadLn(arrCircles[i].r); End; Amount := 0; For i := 1 To n Do For j := Succ(i) To n Do CircleIntersect(arrCircles[i], arrcircles[j]); WriteLn( 'Найдено точек:', Amount ); For i := 1 To Amount Do WriteLn( 'точка #', i, ': x = ', interpoint[i].x:7:3, ' y = ', interpoint[i].y:7:3 ); ReadLn End. Вот в таком виде все отработало без проблем (на всякий случай, можно узнать, с какими координатами прогонялась программа?) |
Liba Задачи по аналитической геометрии. 27.10.2004 19:57
Digitalator задача1
Ты что, математику не знаешь???????
зада... 28.10.2004 2:04
xds Предсказываю: имеется в виду выпуклый многоугольни... 28.10.2004 3:03
Altair Между прочим, первую задачу, решит не каждый, если... 28.10.2004 6:50
volvo Насколько я помню, в общем случае первая задача ре... 28.10.2004 12:25
Liba Спасибо!!!
А почему когда я ее запуска... 28.10.2004 17:36
Liba
Совершенно точно ты предугодал.... 30.10.2004 10:28
Guest Неучто никто не знает как сделать 2 задачку???? :( 11.11.2004 22:59
Altair
А что значит минимальный?
по какому параметру он ... 12.11.2004 7:23
Guest да
имеется в виду выпуклый многоугольник минималь... 12.11.2004 9:32
Guest Ну кто-нибудь решите программку???пожалуйста :p2: 18.11.2004 23:57
Liba Думаю я повтрарю задание....... ;)
На плоскост... 19.11.2004 0:29
volvo Liba
Алгоритм описан здесь 19.11.2004 0:53
Liba Алгоритм алгоритмом.........а написать программу я... 19.11.2004 7:15
Altair АУ!
Там есть блок схема!
скачайте редактор... 19.11.2004 7:27
Liba ОГРОМНЕЙШЕЕ СПАСИбО!!!!!!... 23.11.2004 21:19![]() ![]() |
|
Текстовая версия | 9.12.2025 2:29 |