using System.Collections.Generic;
public abstract class SchoolMembers
public string dateofbirth;
public string Subject { get; set; }
public double Mark { get; set; }
public string Date { get; set; }
public Grade(string subject, double mark, string date)
public class Student : SchoolMembers
public string Klass{ get; set; }
public string Subject { get; set; }
public double Grade { get; set; }
public List<Grade> grades = new List<Grade>();
public Student(string name, string egn, string dateofbirth, string phonenum) : base() {}
private void NewStudent()
var input = Console.ReadLine().Split(' ').ToList();
Student student = new Student(input[0], input[1], input[2], input[3]);
Console.Write("Enter student = ");
this.name = Console.ReadLine();
Console.Write("Would you like to enter a new grade?(y/n) - ");
string input = Console.ReadLine().ToLower();
Console.Write("Please enter the subject, the mark (2 - 6), and the date: ");
var grad = Console.ReadLine().Split(' ').ToList();
Grade grade = new Grade(grad[0], int.Parse(grad[1]), grad[2]);
else if (input == "n") { break; }
public void OutputGrades(List<Grade> grades)
foreach(Grade grade in grades)
Console.WriteLine("Subject = {0}, Grades = {1}.", this.subject, this.grade);
public class Square : SchoolMembers
static int sq = 0; public int num;
public double A { get; set; }
public Square() { sq++; this.num = sq; this.name = "Square " + num;}
public override void Input()
Console.Write("Writing for square:\nSide A = ");
this.a = double.Parse(Console.ReadLine());
public override void Output()
Console.WriteLine("Side A = {0}", this.a);
public override double Area()
this.AreaQ = (this.a) * (this.a); return AreaQ;
public override void WriteDown()
Console.WriteLine("Figure {0} area = {1:F2} cm2.", this.name, this.AreaQ);
public class Rectangle : Figure
static int re = 0; public int num;
public double A { get; set; }
public double B { get; set; }
public Rectangle() { re++; this.num = re; this.name = "Rectangle " + num;}
public override void Input()
Console.Write("Writing for triangle:\nSide A = ");
this.a = double.Parse(Console.ReadLine());
Console.Write("Side B = ");
this.b = double.Parse(Console.ReadLine());
public override void Output()
Console.WriteLine("Side A = {0}, Side B = {1}", this.a, this.b);
public override double Area()
this.AreaQ = (this.a) * (this.b); return AreaQ;
public override void WriteDown()
Console.WriteLine("Figure {0} area = {1:F2} cm2.", this.name, this.AreaQ);
public class Circle : Figure
static int ci = 0; public int num;
public double R { get; set; }
public Circle() { ci++; this.num = ci; this.name = "Circle " + num;}
public override void Input()
Console.Write("Writing for circle:\nRadius = ");
this.r = double.Parse(Console.ReadLine());
public override void Output()
Console.WriteLine("Radius = {0}", this.r);
public override double Area()
this.AreaQ = (this.r) * (this.r) * Math.PI; return AreaQ;
public override void WriteDown()
Console.WriteLine("Figure {0} area = {1:F2} cm2.", this.name, this.AreaQ);
public class Trapezoid : Figure
static int trap = 0; public int num;
public double A { get; set; }
public double B { get; set; }
public double H { get; set; }
public Trapezoid() { trap++; this.num = trap; this.name = "Trapezoid " + num;}
public override void Input()
Console.Write("Writing for trapezoid:\nBase 1 = ");
this.a = double.Parse(Console.ReadLine());
Console.Write("Base 2 = ");
this.b = double.Parse(Console.ReadLine());
Console.Write("Height = ");
this.h = double.Parse(Console.ReadLine());
public override void Output()
Console.WriteLine("Base 1 = {0}, Base 2 = {1}, Height = {2}", this.a, this.b, this.h);
public override double Area()
this.AreaQ = ((this.a) + (this.b)) * (this.h) / 2; return AreaQ;
public override void WriteDown()
Console.WriteLine("Figure {0} area = {1:F2} cm2.", this.name, this.AreaQ);
public static void Main()
List<Figure> figures = new List<Figure>();
Console.Write("Would you like to enter a new shape?(y/n) - ");
string input = Console.ReadLine().ToLower();
Console.Write("Please write a number (1 - Triangle, 2 - Square, 3 - Circle, 4 - Trapezoid): ");
int num = int.Parse(Console.ReadLine());
Triangle triangle = new Triangle();
triangle.Input(); triangle.Output(); Console.WriteLine("Area equals {0:F2} cm2.", triangle.Area());
Square square = new Square();
square.Input(); square.Output(); Console.WriteLine("Area equals {0:F2} cm2.", square.Area());
Circle circle = new Circle();
circle.Input(); circle.Output(); Console.WriteLine("Area equals {0:F2} cm2.", circle.Area());
Trapezoid trapezoid = new Trapezoid();
trapezoid.Input(); trapezoid.Output(); Console.WriteLine("Area equals {0:F2} cm2.", trapezoid.Area());
throw new ArgumentException("Write a number between 1 and 4.");
throw new ArgumentException("Please write y or n.");
foreach(var figure in figures.OrderBy(x => x.AreaQ))