Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
26
Добавлен:
31.03.2015
Размер:
33.28 Кб
Скачать

Подготовка программы Лаб.1 к Лаб.4

А) С целью улучшения структуры программы Лаб.1 рекомендуется провести следующие изменения.

Описать булевские переменные: var P1,P2, P3: Boolean.

Проект алгоритма к л.р.4

----------------------------------------------------------

P1:= <пересекаются?>

P2:= <вложены?>

P3:= <касаются?>

If P1 or P2 then

begin

<пересекаются>;

<Приближенное площади пересечения фигур >;

If P2 then

begin

<вложены>;

<Точное вычисление площади вложенной фигуры>

end

end

Else

If P3 then

<касаются>

Else

<не пересекаются>

Б) Изменения в «Лабораторном практикуме» (стр.21)

  1. Написать логическое выражение, которое отвечает на вопрос:

«Принадлежит ли

точка (x, y) заданной области пересечения?» Если принадлежит, то результат равен true, а если не принадлежит, то результат равен false.

Пример.

P1:= (sqr(x)+sqr(y)) £ r*r ; {Принадлежит кругу?}

P2:= (sqr(x)/sqr(a)+sqr(y)/sqr(b))£1 {Принадлежит эллипсу?}

{Точка (х, у) принадлежит пересечению круга и эллипса?}

if P1 and P2 then

else

{Принадлежит}

{Не принадлежит}

  1. Вместо простейшей заглушки вставить проверку принадлежности точки области

пересечения. Отладить, выбирая точки, принадлежащие области, лежащей на границе области, вне области пересечения фигур.

  1. Изучить раздел 7.1 “Итерационные методы” и использовать общий алгоритм для приближенного вычисления площади фигуры .

Из задачи Приближенное вычисление площади (сегмент С1) выделяется подзадача Вычисление m (сегмент С2),

Sold и Snew - площади фигуры на предыдущем и текущем шагах итерации.

Каждое значение площади Snew вычислено для большего количества точек, чем Sold.

{Прибл. вычисление площади} С1 <Инициализация Snew и k>

повторить

Sold :=Snew

C2

<Вычисление n и Snew>

<Изменение k>

до ½ Snew - Sold ½< e

{Вычисление m}

Отладить, раскрыв абстракцию Вычисление m простейшей заглушкой, например m:=n.

  1. Добавить в программу описание интерфейса процедуры MonteCarlo_m (см. 7.10).

{Входные: вещ a,b,c,d – границы C2 прямоугольника, цел k –число разбиений;

Выходные: цел m – число точек, принадлежащих области пересечения}

procedure MonteCarlo_m (a,b,c,d:real;

k:longint; var m:longint);

var

<Описание локальных переменных>

begin

<Алгоритм вычисления m>

end

Раскрыть в сегменте С1 абстракцию Вычисление m в виде оператора процедуры MonteCarlo_m(a,b,c,d,k,m). Все параметры процедуры должны быть описаны в главной программе.

Следует отметить, что к входным данным процедуры относится и описание области пересечения фигур, но мы ее локализуем в процедуре. Тем самым процедура теряет свойство универсальности.

Соседние файлы в папке Metod1_2010