Програма за работа със структури и функции // Дадени са n точки в равнината, зададени с техните координати, като те образуват изпъкнал n-ъгълник



Дата28.01.2017
Размер13.95 Kb.
#13679
ТипПрограма
// Примерна програма за работа със структури и функции

// Дадени са N точки в равнината, зададени с техните координати, като те образуват изпъкнал N-ъгълник.

// Да се изчислят и изведат лицето и периметъра на N-ъгълника.
#include

#include


const Nmax=100;
// структура за точка

struct point_str {

double x,y;

};

// деклариране на масив от структурни данни за точки



point_str P[Nmax];
double L,S;
//Функция за изчисляване разстояние между две точки

double dist(double x1, double y1, double x2, double y2) {

double d;

d=sqrt(pow(x2-x1,2)+pow(y2-y1,2));

return d;

}
//Функция за изчисляване лице на триъгълник по координати на 3те му точки

//по Херонова формула

double area(double x1, double y1, double x2, double y2, double x3, double y3) {

double s,a,b,c,p;

a=dist(x1,y1,x2,y2);

b=dist(x2,y2,x3,y3);

c=dist(x1,y1,x3,y3);

p=(a+b+c)/2;

s=sqrt(p*(p-a)*(p-b)*(p-c));

return s;

}
// Функция за въвеждане на цяла променлива в зададен интервал [min, max]

int Input_M(char text[20], int min, int max) {

int m;


do {

cout << text; cin >> m;

}

while (mmax);



return m;

}
// функция за въвеждане на координати на N точки

void Input_Points(int N, point_str Points[Nmax]) {

for (int i=0; i

cout<<"точка "<

cout<<"x="; cin >> Points[i].x;

cout<<"y="; cin >> Points[i].y;

}

}


// функция за изчисляване на лице на изпъкнал N-ъгълник, който се разделя на N-2 триъгълника

double Area_NPoints(int N, point_str Points[Nmax]) {

double s=0;

for (int i=0; i

s+=area(Points[0].x,Points[0].y,Points[i+1].x,Points[i+1].y,Points[i+2].x,Points[i+2].y);

return s;

}
// функция за изчисляване на обиколка на изпъкнал N-ъгълник

double Perimeter_NPoints(int N, point_str Points[Nmax]) {

double p=0;

for (int i=0; i

p+=dist(Points[i].x,Points[i].y,Points[i+1].x,Points[i+1].y);

p+=dist(Points[N-1].x,Points[N-1].y,Points[0].x,Points[0].y);

return p;

}

void main () {



int N=Input_M("Въведете брой точки N=",2,Nmax);

Input_Points(N,P);

S=Area_NPoints(N,P);

cout<<"Лицето на многоъгълника е S="<

L=Perimeter_NPoints(N,P);

cout<<"Обиколката на многоъгълника е L="<

}

Каталог: filebank
filebank -> Тема на дипломната работа
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> 1 3 в е к а б ъ л г а р и я“ Утвърдил
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> Зимна сесия – уч. 2015– 2016 г. Начало на изпитите 00 ч. Теоретична механика ІІ ч. Динамика
filebank -> Упражнение №1
filebank -> О т ч е т на проф. Д-р инж. Борислав маринов – декан на геодезическия факултет при уасг пред общото събрание на факултета
filebank -> Техническа механика
filebank -> Дати за поправителната сесия септември 2013 г катедра “Техническа механика”


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница