Скачать презентацию Пример программы ТР в консольном приложении Условие Скачать презентацию Пример программы ТР в консольном приложении Условие

Пример_программы_ТР.ppt

  • Количество слайдов: 11

Пример программы ТР в консольном приложении Пример программы ТР в консольном приложении

Условие задачи Дано n точек на плоскости. Рассматривая всевозможные пары точек как концы отрезков, Условие задачи Дано n точек на плоскости. Рассматривая всевозможные пары точек как концы отрезков, из отрезков, параллельных заданному направлению, выбрать отрезок максимальной длины. y ugol 3 4 1 x 2 5 n 6 …

Состав данных Имя Смысл Тип Структура Исходные данные ugol Угол, определяющий заданное направление (в Состав данных Имя Смысл Тип Структура Исходные данные ugol Угол, определяющий заданное направление (в градусах) вещ. простая переменная n Число точек цел. простая переменная вещ. одномерный массив x y Координаты точек Выходные данные imax Номера искомых точек цел. простая переменная jmax Промежуточные данные i Счетчик первой точки пары цел. простая переменная j Счетчик второй точки пары цел. простая переменная max Максимальная длина отрезка вещ. простая переменная L Текущая длина отрезка вещ. простая переменная u Угол текущего отрезка с осью ОХ вещ. простая переменная

Блок-схема алгоритма Начало 1 Ввод исходных данных imax=-1 max: =0; imax: =-1; i: =0 Блок-схема алгоритма Начало 1 Ввод исходных данных imax=-1 max: =0; imax: =-1; i: =0 j: =i+1 1 j n-1 - 2 Обработка отрезка с концами (xi, yi) и (xj, yj) 3 j: =j+1 i: =i+1 1 Вывод “нет отрезков, параллельных заданному” Вывод imax, jmax i n-2 + Конец

Блок 2. Обработка отрезка с концами (xi, yi) и (xj, yj) 1 2 -1 Блок 2. Обработка отрезка с концами (xi, yi) и (xj, yj) 1 2 -1 Вычисление u 2 -2 + |u-ugol|<10 -6 2 -3 Вычисление L 2 -4 L>max + max: =L; imax: =i; jmax: =j 3

Блок 2 -2. Сравнение текущего угла u с заданным ugol u и ugol – Блок 2 -2. Сравнение текущего угла u с заданным ugol u и ugol – вещественные данные, поэтому вместо сравнения на равенство (u = ugol) надо сравнивать на близость: |u-ugol|<10 -6

Определение угла отрезка с осью ОХ и его длины. Можно было написать функции, но Определение угла отрезка с осью ОХ и его длины. Можно было написать функции, но мы сделаем класс! Type otr=class private x 1, y 1, x 2, y 2, dl, u: real; {координаты концов отрезка, его длина и угол с Ох в градусах} public constructor create(x 1, y 1, x 2, y 2: real); Function Get_dl: real; Function Get_u: real; //в градусах End;

Методы класса отрезок constructor otr. create(x 1, y 1, x 2, y 2: real); Методы класса отрезок constructor otr. create(x 1, y 1, x 2, y 2: real); begin self. x 1: =x 1; self. x 2: =x 2; self. y 1: =y 1; self. y 2: =y 2; end; Function otr. Get_dl: real; begin dl: =sqrt(sqr(x 1 -x 2)+sqr(y 1 -y 2)); result: =dl; end;

Методы класса отрезок Function otr. Get_u: real; begin if abs(x 1 -x 2)<1. 0 Методы класса отрезок Function otr. Get_u: real; begin if abs(x 1 -x 2)<1. 0 e-6 then u: =90 else u: =arctan((y 1 -y 2)/(x 1 -x 2))/pi*180; result: =u; end;

Геометрическая иллюстрация к методам класса отрезок (x 1, y 1) dl y y 1 Геометрическая иллюстрация к методам класса отрезок (x 1, y 1) dl y y 1 -y 2 u x (x 2, y 2) x 1 -x 2

Блок 2. Обработка отрезка с концами (xi, yi) и (xj, yj) Var o: otr; Блок 2. Обработка отрезка с концами (xi, yi) и (xj, yj) Var o: otr; . . . 1 2 -1 o: =otr. create(x[i], y[i], x[j], y[j]); u: =o. Get_u Вычисление u 2 -2 + |u-ugol|<10 -6 2 -3 Вычисление L 2 -4 L>max L: =o. Get_dl + max: =L; imax: =i; jmax: =j 3 … o. destroy