Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- class triangle {
- private:
- double x[3],y[3],z[3];
- public:
- triangle(void);
- triangle(double[],double[],double[]);
- triangle(const triangle&);
- double S(void); //Площадь
- double length(int); //Длина стороны нулевой, первой или второй.
- void set(double[],double[],double[]); //Установить координаты трех вершин из трех массивов
- void set(double[],int); //Установить координаты вершины номер 0, 1 или 2 из массива
- void set(int); //Ввести вручную координаты вершины номер 0, 1 или 2
- void set(void); //Ввести все координаты вручную.
- void print(void); //Напечатать
- };
- void triangle::print(void) {
- printf("\nTreygolnik:\n{");
- for(int i=0;i<3;i++) printf("%5.2lf,",x[i]); //напечатать точку Х
- printf("}\n{");
- for(int i=0;i<3;i++) printf("%5.2lf,",y[i]); //напечатать точку Y
- printf("}\n{");
- for(int i=0;i<3;i++) printf("%5.2lf,",z[i]); //напечатать точку Z
- printf("}");
- }
- void triangle::set(double a[], double b[], double c[]) {
- set(a,0); //Весь массив А в точку 0
- set(b,1); //Весь массив B в точку 1
- set(c,2); //Весь массив C в точку 2
- }
- void triangle::set(double a[], int b) {
- switch(b) { //Если b = 0, 1 или 2 то
- default: printf("\nError"); break;
- case 0: x[0]=a[0]; x[1]=a[1]; x[2]=a[2]; break; //Если 0 то записать весь массив в точку Х
- case 1: y[0]=a[0]; y[1]=a[1]; y[2]=a[2]; break; //Если 1 то записать весь массив в точку Y
- case 2: z[0]=a[0]; z[1]=a[1]; z[2]=a[2]; break; //Если 2 то записать весь массив в точку Z
- }
- }
- void triangle::set(int a) {
- double q,w,e;
- if(a>=0 && a<3) {
- printf("\nVvod vershini %d:\nx: ", a);
- scanf("%lf",&q); printf("y: "); //считываем 3 координаты точки
- scanf("%lf",&w); printf("z: ");
- scanf("%lf",&e);
- }
- switch(a) { //и записываем в зависимости от А в точку Х, Y, или Z
- default: printf("\nError"); break;
- case 0: x[0]=q; x[1]=w; x[2]=e; break;
- case 1: y[0]=q; y[1]=w; y[2]=e; break;
- case 2: z[0]=q; z[1]=w; z[2]=e; break;
- }
- }
- void triangle::set(void) {
- printf("\nVvod Treygolnika");
- set(0); //Ввести точку 0
- set(1); //Ввести точку 1
- set(2); //Ввести точку 2
- }
- triangle::triangle(void) { //Стандартный треугольник
- x[0]=0; y[0]=6; z[0]=3;
- x[1]=0; y[1]=8; z[1]=4;
- x[2]=0; y[2]=0; z[2]=5;
- }
- triangle::triangle(double a[],double b[],double c[]) { //Треугольник по трем точкам из трех массивов
- x[0]=a[0]; y[0]=b[0]; z[0]=c[0];
- x[1]=a[1]; y[1]=b[1]; z[1]=c[1];
- x[2]=a[2]; y[2]=b[2]; z[2]=c[2];
- }
- triangle::triangle(const triangle& A) { //Копи конструктор
- x[0]=A.x[0]; y[0]=A.y[0]; z[0]=A.z[0];
- x[1]=A.x[1]; y[1]=A.y[1]; z[1]=A.z[1];
- x[2]=A.x[2]; y[2]=A.y[2]; z[2]=A.z[2];
- }
- double triangle::S(void) {
- double a,b,c,p;
- a=length(0); //длина нулевой стороны
- b=length(1); //длина 1 стороны
- c=length(2); //длина 2 стороны
- p=(a+b+c)/2;
- return sqrt(p*(p-a)*(p-b)*(p-c));
- }
- double triangle::length(int a) {
- switch(a) {
- case 0: return sqrt((y[0]-x[0])*(y[0]-x[0])+(y[1]-x[1])*(y[1]-x[1])+(y[2]-x[2])*(y[2]-x[2]));
- case 1: return sqrt((z[0]-y[0])*(z[0]-y[0])+(z[1]-y[1])*(z[1]-y[1])+(z[2]-y[2])*(z[2]-y[2]));
- case 2: return sqrt((z[0]-x[0])*(z[0]-x[0])+(z[1]-x[1])*(z[1]-x[1])+(z[2]-x[2])*(z[2]-x[2]));
- }
- return 0;
- }
- int main() {
- triangle A;
- printf("%lf",A.S());
- double x[3]={0,1,2};
- double y[3]={2,4,6};
- double z[3]={1,2,3};
- triangle B(x,y,z);
- printf("\n%lf",B.S());
- triangle C(B);
- printf("\n%lf",C.S());
- A.print();
- A.set(x,y,z);
- A.print();
- printf("\nDlina storoni: %lf", A.length(0));
- }
Advertisement
Add Comment
Please, Sign In to add comment