Hellko

TREYGOLNIK

Feb 21st, 2013
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.46 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. class triangle {
  5. private:
  6.     double x[3],y[3],z[3];
  7. public:
  8.     triangle(void);
  9.     triangle(double[],double[],double[]);
  10.     triangle(const triangle&);
  11.     double S(void);             //Площадь
  12.     double length(int);         //Длина стороны нулевой, первой или второй.
  13.     void set(double[],double[],double[]); //Установить координаты трех вершин из трех массивов
  14.     void set(double[],int);     //Установить координаты вершины номер 0, 1 или 2 из массива
  15.     void set(int);              //Ввести вручную координаты вершины номер 0, 1 или 2
  16.     void set(void);             //Ввести все координаты вручную.
  17.     void print(void);           //Напечатать
  18. };
  19. void triangle::print(void) {
  20.     printf("\nTreygolnik:\n{");
  21.     for(int i=0;i<3;i++) printf("%5.2lf,",x[i]); //напечатать точку Х
  22.     printf("}\n{");
  23.     for(int i=0;i<3;i++) printf("%5.2lf,",y[i]); //напечатать точку Y
  24.     printf("}\n{");
  25.     for(int i=0;i<3;i++) printf("%5.2lf,",z[i]); //напечатать точку Z
  26.     printf("}");
  27. }
  28.  
  29. void triangle::set(double a[], double b[], double c[]) {
  30.     set(a,0);   //Весь массив А в точку 0
  31.     set(b,1);   //Весь массив B в точку 1
  32.     set(c,2);   //Весь массив C в точку 2
  33. }
  34.  
  35. void triangle::set(double a[], int b) {
  36.     switch(b) {                     //Если b = 0, 1 или 2 то
  37.     default: printf("\nError"); break;
  38.     case 0: x[0]=a[0]; x[1]=a[1]; x[2]=a[2]; break;  //Если 0 то записать весь массив в точку Х
  39.     case 1: y[0]=a[0]; y[1]=a[1]; y[2]=a[2]; break;  //Если 1 то записать весь массив в точку Y
  40.     case 2: z[0]=a[0]; z[1]=a[1]; z[2]=a[2]; break;  //Если 2 то записать весь массив в точку Z
  41.     }
  42. }
  43.  
  44. void triangle::set(int a) {
  45.     double q,w,e;
  46.     if(a>=0 && a<3) {
  47.         printf("\nVvod vershini %d:\nx: ", a);
  48.         scanf("%lf",&q); printf("y: ");             //считываем 3 координаты точки
  49.         scanf("%lf",&w); printf("z: ");
  50.         scanf("%lf",&e);
  51.     }
  52.     switch(a) {                                     //и записываем в зависимости от А в точку Х, Y, или Z
  53.     default: printf("\nError"); break;
  54.     case 0: x[0]=q; x[1]=w; x[2]=e; break;
  55.     case 1: y[0]=q; y[1]=w; y[2]=e; break;
  56.     case 2: z[0]=q; z[1]=w; z[2]=e; break;
  57.     }
  58. }
  59. void triangle::set(void) {
  60.     printf("\nVvod Treygolnika");
  61.     set(0); //Ввести точку 0
  62.     set(1); //Ввести точку 1
  63.     set(2); //Ввести точку 2
  64. }
  65.  
  66. triangle::triangle(void) {      //Стандартный треугольник
  67.     x[0]=0;  y[0]=6;  z[0]=3;
  68.     x[1]=0;  y[1]=8;  z[1]=4;
  69.     x[2]=0;  y[2]=0;  z[2]=5;
  70. }
  71. triangle::triangle(double a[],double b[],double c[]) {          //Треугольник по трем точкам из трех массивов
  72.     x[0]=a[0];  y[0]=b[0];  z[0]=c[0];
  73.     x[1]=a[1];  y[1]=b[1];  z[1]=c[1];
  74.     x[2]=a[2];  y[2]=b[2];  z[2]=c[2];
  75. }
  76. triangle::triangle(const triangle& A) {             //Копи конструктор
  77.     x[0]=A.x[0];  y[0]=A.y[0];  z[0]=A.z[0];
  78.     x[1]=A.x[1];  y[1]=A.y[1];  z[1]=A.z[1];
  79.     x[2]=A.x[2];  y[2]=A.y[2];  z[2]=A.z[2];
  80. }
  81. double triangle::S(void) {
  82.     double a,b,c,p;
  83.     a=length(0); //длина нулевой стороны
  84.     b=length(1); //длина 1 стороны
  85.     c=length(2); //длина 2 стороны
  86.     p=(a+b+c)/2;
  87.     return sqrt(p*(p-a)*(p-b)*(p-c));
  88. }
  89.  
  90. double triangle::length(int a) {
  91.     switch(a) {
  92.     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]));
  93.     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]));
  94.     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]));
  95.     }
  96.     return 0;
  97. }
  98.  
  99. int main() {
  100.     triangle A;
  101.     printf("%lf",A.S());
  102.     double x[3]={0,1,2};
  103.     double y[3]={2,4,6};
  104.     double z[3]={1,2,3};
  105.     triangle B(x,y,z);
  106.     printf("\n%lf",B.S());
  107.     triangle C(B);
  108.     printf("\n%lf",C.S());
  109.     A.print();
  110.     A.set(x,y,z);
  111.     A.print();
  112.     printf("\nDlina storoni: %lf", A.length(0));
  113. }
Advertisement
Add Comment
Please, Sign In to add comment