Загрузка данных
1 вар 1 зад
using System;
class VALUE : IComparable<VALUE>
{
public long WholePart;
public ushort FractionPart;
public VALUE(long whole, ushort fraction)
{
WholePart = whole;
FractionPart = fraction;
}
private double ToDouble()
{
return WholePart + FractionPart / 1000.0;
}
public static VALUE FromDouble(double value)
{
long whole = (long)value;
ushort fraction = (ushort)((value - whole) * 1000);
return new VALUE(whole, fraction);
}
// Сложение
public static VALUE operator +(VALUE a, VALUE b)
{
return FromDouble(a.ToDouble() + b.ToDouble());
}
// Вычитание
public static VALUE operator -(VALUE a, VALUE b)
{
return FromDouble(a.ToDouble() - b.ToDouble());
}
// Умножение
public static VALUE operator *(VALUE a, VALUE b)
{
return FromDouble(a.ToDouble() * b.ToDouble());
}
// Сравнение
public int CompareTo(VALUE other)
{
return ToDouble().CompareTo(other.ToDouble());
}
public static bool operator >(VALUE a, VALUE b)
{
return a.CompareTo(b) > 0;
}
public static bool operator <(VALUE a, VALUE b)
{
return a.CompareTo(b) < 0;
}
public override string ToString()
{
return $"{WholePart},{FractionPart:D3}";
}
static void Main()
{
VALUE a = new VALUE(5, 250);
VALUE b = new VALUE(2, 500);
Console.WriteLine("a = " + a);
Console.WriteLine("b = " + b);
Console.WriteLine("a + b = " + (a + b));
Console.WriteLine("a - b = " + (a - b));
Console.WriteLine("a * b = " + (a * b));
Console.WriteLine("a > b : " + (a > b));
}
}
1 вар 2 зад
using System;
abstract class Triangle
{
protected double a;
protected double b;
protected double angle;
public Triangle(double a, double b, double angle)
{
this.a = a;
this.b = b;
this.angle = angle;
}
public abstract double Area();
public abstract double Perimeter();
}
// Прямоугольный
class RightTriangle : Triangle
{
public RightTriangle(double a, double b)
: base(a, b, 90) { }
public override double Area()
{
return a * b / 2;
}
public override double Perimeter()
{
return a + b + Math.Sqrt(a * a + b * b);
}
}
// Равнобедренный
class IsoscelesTriangle : Triangle
{
public IsoscelesTriangle(double side, double baseSide, double angle)
: base(side, baseSide, angle) { }
public override double Area()
{
double rad = angle * Math.PI / 180;
return a * b * Math.Sin(rad) / 2;
}
public override double Perimeter()
{
double c = Math.Sqrt(a * a + b * b -
2 * a * b * Math.Cos(angle * Math.PI / 180));
return a + b + c;
}
}
// Равносторонний
class EquilateralTriangle : Triangle
{
public EquilateralTriangle(double side)
: base(side, side, 60) { }
public override double Area()
{
return Math.Sqrt(3) * a * a / 4;
}
public override double Perimeter()
{
return 3 * a;
}
}
class Program
{
static void Main()
{
Triangle t1 = new RightTriangle(3, 4);
Triangle t2 = new IsoscelesTriangle(5, 5, 60);
Triangle t3 = new EquilateralTriangle(6);
Console.WriteLine("Прямоугольный:");
Console.WriteLine("S = " + t1.Area());
Console.WriteLine("P = " + t1.Perimeter());
Console.WriteLine();
Console.WriteLine("Равнобедренный:");
Console.WriteLine("S = " + t2.Area());
Console.WriteLine("P = " + t2.Perimeter());
Console.WriteLine();
Console.WriteLine("Равносторонний:");
Console.WriteLine("S = " + t3.Area());
Console.WriteLine("P = " + t3.Perimeter());
}
}
2 вар 1 зад
using System;
class MONEY : IComparable<MONEY>
{
public long Rubles;
public byte Kopecks;
public MONEY(long rubles, byte kopecks)
{
Rubles = rubles;
Kopecks = kopecks;
}
private double ToDouble()
{
return Rubles + Kopecks / 100.0;
}
public static MONEY FromDouble(double value)
{
long rubles = (long)value;
byte kopecks = (byte)((value - rubles) * 100);
return new MONEY(rubles, kopecks);
}
// Сложение
public static MONEY operator +(MONEY a, MONEY b)
{
return FromDouble(a.ToDouble() + b.ToDouble());
}
// Вычитание
public static MONEY operator -(MONEY a, MONEY b)
{
return FromDouble(a.ToDouble() - b.ToDouble());
}
// Деление сумм
public static MONEY operator /(MONEY a, MONEY b)
{
return FromDouble(a.ToDouble() / b.ToDouble());
}
// Деление на число
public static MONEY operator /(MONEY a, double number)
{
return FromDouble(a.ToDouble() / number);
}
// Умножение на число
public static MONEY operator *(MONEY a, double number)
{
return FromDouble(a.ToDouble() * number);
}
// Сравнение
public int CompareTo(MONEY other)
{
return ToDouble().CompareTo(other.ToDouble());
}
public static bool operator >(MONEY a, MONEY b)
{
return a.CompareTo(b) > 0;
}
public static bool operator <(MONEY a, MONEY b)
{
return a.CompareTo(b) < 0;
}
public override string ToString()
{
return $"{Rubles},{Kopecks:D2}";
}
static void Main()
{
MONEY a = new MONEY(10, 50);
MONEY b = new MONEY(3, 25);
Console.WriteLine("a = " + a);
Console.WriteLine("b = " + b);
Console.WriteLine("a + b = " + (a + b));
Console.WriteLine("a - b = " + (a - b));
Console.WriteLine("a / b = " + (a / b));
Console.WriteLine("a / 2 = " + (a / 2.0));
Console.WriteLine("a * 1.5 = " + (a * 1.5));
Console.WriteLine("a > b : " + (a > b));
}
}
2 вар 2 зад
using System;
abstract class Payment
{
public abstract void CalculateRoots();
public abstract void PrintResult();
}
// Линейное уравнение
class Linear : Payment
{
private double a;
private double b;
private double x;
public Linear(double a, double b)
{
this.a = a;
this.b = b;
}
public override void CalculateRoots()
{
x = -b / a;
}
public override void PrintResult()
{
Console.WriteLine("Корень линейного уравнения:");
Console.WriteLine("x = " + x);
}
}
// Квадратное уравнение
class Square : Payment
{
private double a;
private double b;
private double c;
private double x1;
private double x2;
public Square(double a, double b, double c)
{
this.a = a;
this.b = b;
this.c = c;
}
public override void CalculateRoots()
{
double d = b * b - 4 * a * c;
if (d > 0)
{
x1 = (-b + Math.Sqrt(d)) / (2 * a);
x2 = (-b - Math.Sqrt(d)) / (2 * a);
}
else if (d == 0)
{
x1 = x2 = -b / (2 * a);
}
else
{
Console.WriteLine("Корней нет");
}
}
public override void PrintResult()
{
Console.WriteLine("Корни квадратного уравнения:");
Console.WriteLine("x1 = " + x1);
Console.WriteLine("x2 = " + x2);
}
}
class Program
{
static void Main()
{
Payment p1 = new Linear(2, -4);
p1.CalculateRoots();
p1.PrintResult();
Console.WriteLine();
Payment p2 = new Square(1, -5, 6);
p2.CalculateRoots();
p2.PrintResult();
}
}