Санкт-Петербургский государственный

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра Вычислительной техники

 

 

отчет

по лабораторной работе №1

по дисциплине «Программирование»

Тема: Разветвленные алгоритмы и программы

Вариант : 22

 

 

Студент гр.6305 Побежимов.А.А .
Преподаватель Павлов.С.М  

 

 

Санкт-Петербург

2016

Цель работы.

Разработка разветвляющегося алгоритма и программы

Оглавление

Алгоритм.. 3

Пояснения к алгоритму : 4

Проверка алгоритма : 5

Код программы : 6

Примеры запуска: 8

 


 

 

 

 

 

 

Пояснения к алгоритму :

 

 

Переменные : xo – координата x центра окружности

xa - координата x первой точки прямой

xb – координата x второй точки прямой

xc – координата x проверяемой точки

yo - координата y центра окружности

ya - координата y первой точки прямой

yb - координата y второй точки прямой

yc - координата y проверяемой точки

d – диаметр окружности

z – расстояние от проверяемой точки до окружности

stop – для остановки программы

1)Уменьшаем все координаты (кроме xo и yo ) на xo и yo , для смещения центра координат.

2)Если Sqrt(xc^2+yc^2) больше радиуса , то точка за пределами . Если равно радиусу , то на окружности . Если меньше то внутри.

3)Расстояние до окружности равно Sqrt(xc^2+yc^2)

4)Если (Xc-xa)(yb-ya)-(yc-ya)(xb-xa) больше нуля , то точка ниже линии. Если равно , то на линии . Если больше , то ниже линии.

 

Проверка алгоритма :

 

 

При переменных : xo = 0 yo = 0 xa = -3 ya = -2 xb = 3 yb = 1 xc = -1 yc = 1 d = 8 Результаты : Точка внутри окружности ; z = 2.58579 ; Точка выше линии

При переменных : xo = 0 yo = 0 xa = -3 ya = -2 xb = 3 yb = 1 xc = 2 yc = -2 d = 8 Результаты : Точка внутри окружности; z = 1.17157 ; Точка ниже линии

При переменных : xo = 0 yo = 0 xa = -3 ya = -2 xb = 3 yb = 1 xc = 3 yc = 1 d = 8 Результаты : Точка внутри окружности; z = 0.837722 ; Точка на линии

При переменных : xo = 0 yo = 0 xa = -3 ya = -2 xb = 3 yb = 1 xc = 4 yc = 0 d = 8 Результаты : Точка на окружности; z = 0; Точка ниже линии

При переменных : xo = 0 yo = 0 xa = -3 ya = -2 xb = 3 yb = 1 xc = 5 yc = 0 d = 8 Результаты : Точка за окружностью; z = 1; Точка ниже линии

 

Код программы :

 

// ConsoleApplication6.cpp: определяет точку входа для консольного приложения.

//

#include "stdafx.h"

#include <iostream>

#include <conio.h>

using namespace std;

 

 

int main()

{

setlocale(LC_ALL, "Russian");

float x0,y0,d,xa,ya,xb,yb,xc,yc,z,stop;

stop = 1;

while (stop != 0){

cout << "Введите координату x у 1 точки линии \n";

cin >> xa;

cout << "Введите координату x у 2 точки линии \n";

cin >> xb;

cout << "Введите координату x у точки\n";

cin >> xc;

cout << "Введите координату y у 1 точки линии \n";

cin >> ya;

cout << "Введите координату y у 2 точки линии \n";

cin >> yb;

cout << "Введите координату y у точки\n";

cin >> yc;

cout << "Введите координату x центра окружности\n";

cin >> x0;

cout << "Введите координату y центра окружности\n";

cin >> y0;

cout << "Введите диаметр окружности\n";

cin >> d;

xa = xa - x0;

xb = xb - x0;

xc = xc - x0;

ya = ya - y0;

yb = yb - y0;

yc = yc - y0;

if (sqrt((xc*xc) + (yc*yc))>(d / 2))

{

cout << "Точка за территорией\n";

z = sqrt((xc*xc) + (yc*yc)) - (d / 2);

if (z < 0) z = z*(-1);

}

else if (sqrt((xc*xc) + (yc*yc)) == (d / 2)) {

cout << "Точка на границе\n";

z = 0;

}

else {

cout << "Точка на территории\n";

z = sqrt((xc*xc) + (yc*yc)) - (d / 2);

if (z < 0) z = z*(-1);

}

cout << "Расстояние равно\n";

cout << z;

cout << "\n";

if ((xc - xa)*(yb - ya) - (yc - ya)*(xb - xa) > 0)

cout << "Точка ниже линии\n";

else if ((xc - xa)*(yb - ya) - (yc - ya)*(xb - xa) == 0)

cout << "Точка на линии\n";

else cout << "Точка выше линии\n";

 

cout << "Введите любое число кроме 0 для продолжения\n";

cin >> stop;

 

 

}

 

 

return 0;

}

 

Примеры запуска:

 

 

 

.