Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задача на знание элементарной геометрии

Автор: Askid.BY 17.09.2005 20:52

Препод задал задачи а я недорубаю мож поможете...

1 задача:
На плоскости расположена окружность радиусом R с центром в начале координат.Введите заданные координаты точки и определите,находится ли она на окружности.Результат присвойте символьной переменной.Точка находится на окружности ,если длина радиус-вектора,соединяющего начало координат с заданной точкой,равна R (проверку на равенство осуществить с точностью до e=1.0E-3).

2 задача:
Для любых вещественных положительных a и h найдите в последовательности 1,1+h,1+2h... первое значение,больше a.

Какие есть мысли?

Автор: GoodWind 17.09.2005 21:35

1. растояние между двумя точками находится по формуле

Код

rasst:=sqrt(sqr(x1-x2)+sqr(y1-y2));

зная это тебе несложно будет написать проверку...

Автор: GoodWind 17.09.2005 21:39

че-то вроде того:

function IsInCircle(radius,x,y:real):boolean;
begin
IsInCircle:=radius>sqrt(sqr(x)+sqr(y));
end;


примерно так... не проверял и не вдумывался...

Автор: GoodWind 17.09.2005 21:48

читай правила: "Заголовок темы должен быть информативным" :fire: :low:
твое счастье, что я сразу не заметил, а то грохнул бы тему не заглядывая...
а так даже помог чем смог...
чтобы впредь читал правила, прежде чем создавать тему! :nono:

Сообщения разделены в тему: http://forum.pascal.net.ru/index.php?showtopic=6221

Автор: FreeMan 19.09.2005 21:16

2) [(a-1)/h] +1

Автор: Дож 20.09.2005 18:50

Цитата
и определите,находится ли она на окружности.
...
Точка находится на окружности ,если длина радиус-вектора,соединяющего начало координат с заданной точкой,равна R


GoodWind, требуется проверка на нахождение точки на окружности, а не внутри. Поэтому код выглядит примерно так:

function IsOnCircle(radius,x,y:real):boolean;
begin
IsInCircle:=(radius=sqrt(sqr(x)+sqr(y)));
end;


Автор: hiv 20.09.2005 19:45

Цитата(Дож @ 20.09.2005 15:50)

function IsOnCircle(radius,x,y:real):boolean;
begin
IsInCircle:=(radius=sqrt(sqr(x)+sqr(y)));
end;



Это не целый тип, а вещественный! Т.к. на компютере очень редко выполняется равенства с использованием вещественных чисел 2*sin(1.47)*cos(1.47)=sin(2*1.47)
Надо так:
function IsOnCircle(radius,x,y,epsilon:real):boolean;
begin
IsInCircle:=(abs(radius-sqrt(sqr(x)+sqr(y)))<=epsilon);
end;


Автор: volvo 20.09.2005 19:48

hiv, только

Цитата
function IsInCircle(radius,x,y,epsilon:real):boolean;
, хотя, Дож, это больше касается тебя :yes:

Автор: Дож 20.09.2005 20:05

volvo, а там и писалось IsOnCircle, т.к.

Цитата
требуется проверка на нахождение точки на окружности



Цитата
Это не целый тип, а вещественный! Т.к. на компютере очень редко выполняется равенства с использованием вещественных чисел 2*sin(1.47)*cos(1.47)=sin(2*1.47)

И неужели нет стан функции по ср. 2 вещественных чисел с заданною погрешностью?

Автор: volvo 20.09.2005 20:35

Цитата(Дож @ 20.09.2005 16:05)
volvo, а там и писалось IsOnCircle

angry.gif Неужели не понятно, что я имею в виду? Название функции и то, чему ты присваиваешь ее значение что, не должно иметь одно и то же имя? Ты ВООБЩЕ компилятор хоть иногда запускаешь, или п.6 правил раздела к тебе уже не относится???

Автор: hiv 20.09.2005 21:17

Volvo, от твоего взгляда не скроешься! smile.gif Ты конечно прав - это я проглядел...
Дож, сравнение оно и в африке сравнение - все битики должны совпасть. Вернее проблема не в сравнении а в точности вычислений вещественных чисел.

Автор: GoodWind 21.09.2005 0:56

да... слажал я smile.gif)
читал быстро, потому-что торопился на хэт smile.gif кто знает, поймет, кто не знает - www.allods.net