Advertisement
maxlarin2

abstract

Jun 1st, 2014
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.47 KB | None | 0 0
  1. using System;
  2.  
  3. namespace main
  4. {
  5.     class Picture
  6.     {
  7.         private int i;
  8.         triangle[] elements = new triangle[4];
  9.         public Picture(params string[] files)
  10.         {
  11.             foreach (string elem in files)
  12.             {
  13.                 if (elem.Length % 2 == 1)
  14.                 {
  15.                     elements[i] = new equilateral(elem, 14);
  16.                     i++;
  17.                 }
  18.                 else
  19.                 {
  20.                     elements[i] = new isosceles(elem, 12, 60, 15);
  21.                     i++;
  22.                 }
  23.             }
  24.         }
  25.         public void PrintAllInfo()
  26.         {
  27.             foreach (triangle elem in elements)
  28.             {
  29.                 Console.WriteLine(elem.ToString());
  30.                 Console.WriteLine("");
  31.             }
  32.         }
  33.     }
  34.     abstract class triangle
  35.     {
  36.         protected short first, second, third, angle;
  37.         protected string name, type;
  38.         public triangle(string _name, short mod)
  39.         {
  40.             third = second = first = mod;
  41.             angle = 60;
  42.             this.name = _name;
  43.             type = "Произвольный";
  44.         }
  45.         public abstract double square();
  46.         public abstract double perimeter();
  47.     }
  48.     class isosceles : triangle
  49.     {
  50.         public isosceles(string _name, short mod, short angle, short second)
  51.             : base(_name, mod)
  52.         {
  53.             {
  54.                 type = "Равнобедренный";
  55.                 this.angle = angle;
  56.                 this.second = second;
  57.                 third = (short)Math.Truncate(Math.Sqrt(second * second + first * first - 2 * first * second * Math.Cos(angle)));
  58.             }
  59.         }
  60.         public override string ToString()
  61.         {
  62.             return string.Format("Имя данного треугольника - {0}\nВид треугольника: {1}\nДлины неравных сторон - {2} {3}\nУгол между сторонами - {4}\nПериметр - {5}\nПлощадь - {6}", name, type, first, second, angle, perimeter(), square());
  63.         }
  64.         public override double square()
  65.         {
  66.             double p = first + second + third;
  67.             double s = Math.Sqrt(p * (p - first) * (p - second) * (p - third)) / 4;
  68.             return s;
  69.         }
  70.         public override double perimeter()
  71.         {
  72.             return first + 2 * second;
  73.         }
  74.     }
  75.     class equilateral : triangle
  76.     {
  77.         public equilateral(string _name, short mod)
  78.             : base(_name, mod)
  79.         {
  80.             type = "Равносторонний";
  81.         }
  82.         public override double square()
  83.         {
  84.             return Math.Truncate(Math.Sqrt(3) * Math.Pow(first, 2) / 4);
  85.         }
  86.         public override double perimeter()
  87.         {
  88.             return 3 * second;
  89.         }
  90.         public override string ToString()
  91.         {
  92.             return string.Format("Имя данного треугольника - {0}\nВид треугольника: {1}\nДлины неравных сторон - {2} {3}\nУгол между сторонами - {4}\nПериметр - {5}\nПлощадь - {6}", name, type, first, second, angle, perimeter(), square());
  93.         }
  94.     }
  95.     class main
  96.     {
  97.         static void Main(string[] args)
  98.         {
  99.             Picture GeomFig = new Picture("First", "Second", "Firstt", "Secondd");
  100.             GeomFig.PrintAllInfo();
  101.             Console.ReadKey();
  102.         }
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement