Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Программа обработки массивов координат точек на языке Си

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
Постановка задачи и ее математическая модель. Блок-схема алгоритма обработки массивов координат точек. Тестирование алгоритма сортировки. Используемые глобальные и локальные переменные. Листинг программы на языке Си. Анализ результатов. Пример работы.
Краткое сожержание материала:

Размещено на

Задание на курсовую работу

Разработать программу на языке Си, выполняющую следующие действия:

- формирование массива данных;

- расчет расстояний между прямой и заданными точками;

- расчет периметра и площади фигуры, координаты вершин которой определяются координатами четырех произвольных точек;

- расчет координат точки пересечения заданной прямой и произвольной прямой, описываемой уравнением ax+by+c=0.

- сортировку и отображение результатов.

Исходными данными являются:

1. Эскиз чертежа прямой (А) и многоугольника (В).

2. Ограничение R на расстояние между точками массива D и прямой A.

3. Массив координат точек D{(xi,yi)} i=1,n (n>=15), из которых не менее 7-ми точек должны лежать внутри многоугольника B.

В ходе выполнения работы необходимо составить алгоритм и написать программу, позволяющую:

1. Выбрать из массива точек D все точки, лежащие вне многоугольника В, выше прямой А и поместить полученную информацию (номер точки в массиве D, и ее координаты x,y) в новый массив D1.

2. Вычислить расстояние r от каждой точки, входящей в сформированный массив D1, до прямой А. Информацию обо всех точках, для которых выполняется соотношение r>R (R=2), поместить в новый массив D2, включающий в себя следующие поля: номер точки в исходном массиве D; номер точки в массиве D1; координаты x и y; расстояние от точки до прямой r.

3. Упорядочить полученный массив D2 в порядке убывания r.

4. Вывести результаты расчетов (пп. 1-3) в виде таблиц на экран и в файл с заданным при вводе исходных данных именем.

5. Написать функцию, вычисляющую периметр и площадь фигуры, координаты вершин которой определяются координатами четырех точек вводимых с клавиатуры.

6. Написать функцию, определяющую координаты точки пересечения прямой А и произвольной прямой, описываемой уравнением ax+by+c=0. Коэффициенты прямой a,b,c должны вводиться пользователем с клавиатуры.

Разрабатываемая программа должна удовлетворять следующим требованием:

1) ввод исходных данных (массив координат точек) должен осуществляться как из файла с заданным именем, так и с клавиатуры (по выбору пользователя);

2) результаты расчета должны выводиться как в виде таблиц на экран, так и в файл с заданным именем;

3) процедуры расчета расстояний r , выбора точек из массивов, сортировки массива D2 и вывода результатов следует оформить в программе в форме функций пользователя.

1. Постановка задачи и ее математическая модель

Задача

Модель решения

Получение исходных координат точек из файла с заданным именем или ввод координат точек с клавиатуры (по выбору пользователя) и запись из в массив D.

Построчное считывание при помощи функции fscanf (требует подключения stdio.h) из указанного файла пар чисел написанных через разделитель( пробел); формат считываемых чисел - вещественное с плавающей запятой; считывание продолжается до тех пор пока функция fscanf не возвратит EOF(End Of File);

Или запись вводимых чисел с клавиатуры с помощью функции scanf. Числа записываются в массив как вещественные с плавающей запятой.

Выбор из массива D точек, лежащих внутри многоугольника B: (0;3), (3;13), (13;11),(11;3))

Искомые точки должны лежать:

Выше прямой y=3

Выше прямой y=4x-41

Ниже прямой y=3.33x-3

Ниже прямой y=-0.2x+13.6

Выбор из массива D1, полученного на предыдущем этапе, точек, лежащих от прямой на расстоянии меньшем или равном R (уравнение прямой А:y=-0.65x+14, R =3.8 )

Формула расчета r = |a*x0+b*y0+c|/sqrt(a^2 + b^2)

Рассчитываем r и заносим в отдельное поле массива.

(r<=R)

Сортировка массива D2, полученного на предыдущем этапе, по возрастанию r.

Сортировка методом пузырька.

(сравниваются значения поля r)

Сохранение результатов работы программы в файл и вывод на экран (вывод и запись осуществляется в виде таблиц)

Построчное заполнение указанного файла( а также вывод на экран) элементами массивов, полученных на предыдущих этапах (для каждого из массивов заполняются все необходимые поля: D координаты x и y, для D1 - x, y и номер элемента в массиве D, для D2 x, y, номер элемента в D и D1 и расстояние r до прямой А). Для записи в файл используется функция fprintf, для вывода на экран printf (требуется подключение stdio.h)

Функция, вычисляющая периметр и площадь фигуры, координаты вершин которой вводятся пользователем с клавиатуры.

При вводе точек есть одна оговорка: координаты точек вводить по часовой и фигура должна быть правильной (выпуклой). После ввода точек, определяем расстояния между этими точками (длины граней фигуры) по формуле

r = sqrt((x1-x2)^2 + (y1-y2)^2)

Периметр находим, сложив все длины

Р = r1 + r2 + r3 +r4;

Площадь находим как сумму площадей треугольников, образующих фигуру.

S = s1 + s2;

s1 и s2 ищем по формуле Герона:

s = p*(p-a)*(p-b)(p-c), где p = (a+b+c)/2 - полупериметр данного треугольника. (a, b - расстояние от одной вершины фигуры до другой, с - длина диагонали фигуры, которая находится по той же формуле что и r)

Функция, рассчитывающая координаты пересечения исходной прямой А с прямой, координаты которой вводятся пользователем с клавиатуры.

Параметрическое уравнение прямой А

-0.65 *x +14 - y = 0 (a = -0.65, b = 1, с = 14)

Возможны два случая (случаи, которые требуется рассмотреть в задании на курсовую работу):

1. Если угловые коэффициенты a/b равны, то прямые параллельны (или совпадают) и не имеют точку пересечения. При выпадении этого случая, на кран выводится сообщение сообщающее, что прямые параллельны.

2. Точка пересечения находится из решения уравнений:

a*x + b*y + c = 0

a1*x + b1*y + с = 0

Точка пересечения:

x=(c+14*b)/(0.65*b-a);

y=-0.65*x+14;.

2. Блок - схема алгоритма

массив координата точка программа

3. Тестирование алгоритма сортировки

№ Шага

№ Блока

flag

i

Массив

D2[i][4]<D2[i-1][4]

flag!=1

2

0

3

1.45

4.68

6.52

Да, меняем

-

3

1

-

-

-

-

4

1

2

1.45

6.52

4.68

Да, меняем

-

5

1

-

-

-

-

6

1

1

6.52

1.45

4.68

Нет, не меняем

-

7

1

-

-

-

Другие файлы:

Одномерные массивы
Понятие массива и правила описания массивов в программах на языке С. Рассмотрение основных алгоритмов обработки одномерных массивов. Примеры программ...

Алгоритмы обработки больших массивов. Алгоритмы обработки данных
Обработка текстовых данных, хранящихся в файле. Задачи и алгоритмы обработки больших массивов действительных и натуральных чисел. Практические задачи...

Лабораторная работа по информатике с методичкой (программа на языке программирования ''Паскаль'' под ДОС)
Цель работы – овладение навыками алгоритмизации задач с использованием подпрограмм пользователя различных видов, овладение навыками написания программ...

Работа со структурами в языке программирования Си++
Структура – это объединение одного либо более объектов (переменных, массивов, указателей, других структур). Понятие структурной переменной. Создание м...

Перенос точек на местность
Закрепление точек теодолитного хода. Геометрическое и тригонометрическое нивелирование. Вычисление координат точек замкнутого теодолитного хода. Перен...