Помощь - Поиск - Пользователи - Календарь
Полная версия: задача на знание элементарной геометрии
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Askid.BY
Препод задал задачи а я недорубаю мож поможете...

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

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

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

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

зная это тебе несложно будет написать проверку...
GoodWind
че-то вроде того:
function IsInCircle(radius,x,y:real):boolean;
begin
IsInCircle:=radius>sqrt(sqr(x)+sqr(y));
end;


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

Сообщения разделены в тему: Решение уравнения
FreeMan
2) [(a-1)/h] +1
Дож
Цитата
и определите,находится ли она на окружности.
...
Точка находится на окружности ,если длина радиус-вектора,соединяющего начало координат с заданной точкой,равна R


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

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

hiv
Цитата(Дож @ 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
hiv, только
Цитата
function IsInCircle(radius,x,y,epsilon:real):boolean;
, хотя, Дож, это больше касается тебя :yes:
Дож
volvo, а там и писалось IsOnCircle, т.к.
Цитата
требуется проверка на нахождение точки на окружности



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

И неужели нет стан функции по ср. 2 вещественных чисел с заданною погрешностью?
volvo
Цитата(Дож @ 20.09.2005 16:05)
volvo, а там и писалось IsOnCircle

angry.gif Неужели не понятно, что я имею в виду? Название функции и то, чему ты присваиваешь ее значение что, не должно иметь одно и то же имя? Ты ВООБЩЕ компилятор хоть иногда запускаешь, или п.6 правил раздела к тебе уже не относится???
hiv
Volvo, от твоего взгляда не скроешься! smile.gif Ты конечно прав - это я проглядел...
Дож, сравнение оно и в африке сравнение - все битики должны совпасть. Вернее проблема не в сравнении а в точности вычислений вещественных чисел.
GoodWind
да... слажал я smile.gif)
читал быстро, потому-что торопился на хэт smile.gif кто знает, поймет, кто не знает - www.allods.net
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.