|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.11.2009, 21:32 | #1 |
Регистрация: 05.11.2009
Сообщений: 9
|
множество точек)))
program Covers;
type (*Тип, задающий точку.*) TDot = record X : Extended; Y : Extended; end; (*Вычисляет расстояние между двумя точками.*) function GetDistance(aDot1, aDot2 : TDot) : Extended; begin GetDistance := Sqrt(Sqr(aDot1.X - aDot2.X) + Sqr(aDot1.Y - aDot2.Y)); end; (*Возвращает точку, которая делит отрезок пополам.*) procedure GetMidDot(aDot1, aDot2 : TDot; var aMidDot : TDot); var (*Минимумы по координатам.*) XMin, YMin : Extended; begin if aDot1.X < aDot2.X then begin XMin := aDot1.X; end else begin XMin := aDot2.X; end; if aDot1.Y < aDot2.Y then begin YMin := aDot1.Y; end else begin YMin := aDot2.Y; end; aMidDot.X := XMin + Abs(aDot1.X - aDot2.X) / 2; aMidDot.Y := YMin + Abs(aDot1.Y - aDot2.Y) / 2; end; const (*Размер массива исходных точек.*) DotCount = 20; var (*Массив исходных точек.*) ArrDot : array[1..DotCount] of TDot; (*Количество точек, заданных пользователем - может быть меньше, чем DotCount.*) n : Integer; (*Счётчики для циклов.*) i, j : Integer; (*Индектсы (в массиве ArrDot) двух точек, расстояние между которыми максимальное.*) IMax, JMAx : Integer; (*Расстояние между очередными точками в цикле.*) Distance : Extended; (*Расстояние между двумя наиболее удаленными друг от друга точками.*) (*Это расстояние является диаметром искомой окружности.*) MaxDistance : Extended; (*Радиус искомой окружности.*) Radius : Extended; (*Центр искомой окружности.*) Center : TDot; (*Строка.*) StrTmp : String; begin (*Главный цикл диалога с пользователем.*) repeat (*Ввод исходных точек.*) Writeln('Программа определяет параметры окружности, которая охватывает все заданные точки.'); Writeln('Введите координаты исходных точек.'); (*Количество заданных точек.*) n := 0; (*Цикл диалога ввода исходных точек.*) repeat Inc(n); Writeln('Введите координаты очередной точки через пробел: X Y. И нажмите ENTER.'); Readln(ArrDot[n].X, ArrDot[n].Y); if n = DotCount then begin Writeln('Массив исходных точек заполнен. Ввод завершён.'); StrTmp := '1'; Continue; end; Writeln('Продолжить: ENTER. Завершить ввод исходных точек: любой символ + ENTER.'); Readln(StrTmp); until StrTmp <> ''; Writeln('Введено ', n:2, ' точек.'); (*Расчёт.*) (*Поиск двух точек, расстояние между которыми максимальное.*) MaxDistance := 0; IMax := 1; JMax := 1; for i := 1 to n - 1 do begin for j := i + 1 to n do begin Distance := GetDistance(ArrDot[i], ArrDot[j]); if Distance > MaxDistance then begin MaxDistance := Distance; IMax := i; JMax := j; end; end; end; (*Определение координат центра окружности.*) (*Это точка, лежащая посередине отрезка, концами которого являются точки,*) (*расстояние между которыми максимальное.*) GetMidDot(ArrDot[IMax], ArrDot[JMax], Center); (*Радиус искомой окружности.*) Radius := MaxDistance / 2; (*Показываем результаты вычислений.*) Writeln('Результат вычислений:'); Writeln('Координаты центра окружности: X = ', Center.X:3:4, ', Y = ', Center.Y:3:4); Writeln('Радиус окружности = ', Radius:3:4); Writeln('Повторить: ENTER. Выход: любой символ + ENTER.'); Readln(StrTmp); until StrTmp <> ''; end. помогите заменить программа написана на паскале, а мы вот эти процедуры и функции такие не проходили type TDot = record; function GetDistance(aDot1, aDot2 : TDot); procedure GetMidDot(aDot1, aDot2 : TDot; var aMidDot : TDot); var ArrDot : array[1..DotCount] of TDot; StrTmp помогите пожалуйста заменить для работы в линуксе |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Множество точек пространства. Тетраэдр. | Adya | Общие вопросы C/C++ | 2 | 29.09.2009 22:02 |
Множество | Archangelos | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 15.06.2009 17:49 |
множество. | Юлька:) | Помощь студентам | 1 | 30.03.2009 21:27 |
задача на множество точек | MariyaVo | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 14.01.2009 21:59 |
Множество | xxxPascalxxx | Помощь студентам | 11 | 24.02.2008 19:07 |