8aA7
12.05.2021 01:19

(c#)В данном коде надо обьеденить все методы и вывести на консоль результат. Если что, то вот само задание, половину я уже сделал:
Описати клас, що представляє трикутник. Передбачити методи для
створення об'єктів, переміщення на площині, зміни розмірів і обертання на
заданий кут. Описати властивості для отримання стану об'єкта. При
неможливості побудови трикутника викидається винятки.
Описати клас – спадкоємець, застосувати абстрактні методи /класи
/властивості, віртуальні методи /властивості.
Написати програму, яка демонструвала б усі розроблені елементи
класу.

class Point
{
public float x, y;
public Point(float _x, float _y)
{
x = _x;
y = _y;
}
}
class Triangle
{
public Point a { set; get; }
public Point b { set; get; }
public Point c { set; get; }

public Triangle(Point _a, Point _b, Point _c) //конструктор
{
a = _a;
b = _b;
c = _c;
}
public void sd_right(float w1) //сдвиг вправо
{
a.x = +w1; b.x = +w1; c.x = +w1;
}
public void sd_left(float w2) //сдвиг влево
{
a.x = -w2; b.x = -w2; c.x = -w2;
}
public void sd_up(float w3) //сдвиг верх
{
a.y = +w3; b.y = +w3; c.y = +w3;
}
public void sd_down(float w4) //сдвиг вниз
{
a.y = -w4; b.y = -w4; c.y = -w4;
}
public float R(Point _a, Point _b)
{
return Convert.ToSingle(Math.Sqrt(Math.Pow(_a.x - _b.x, 2) + Math.Pow(_a.y - _b.y, 2)));
}
public void sd_alfa(float d) //поворот на угол d
{
Point M = new Point((a.x + b.x + c.x) / 3, (a.y + b.y + c.y) / 3);
a.x = M.x + Convert.ToSingle(R(M, a) * Math.Cos(d));
a.y = M.y - Convert.ToSingle(R(M, a) * Math.Sin(d));
b.x = M.x + Convert.ToSingle(R(M, b) * Math.Cos(d));
b.y = M.y - Convert.ToSingle(R(M, b) * Math.Sin(d));
c.x = M.x + Convert.ToSingle(R(M, c) * Math.Cos(d));
c.y = M.y - Convert.ToSingle(R(M, c) * Math.Sin(d));
}
public void sd_rad(float r) //увелiчение на r
{
float d = 0;
Point M = new Point((a.x + b.x + c.x) / 3, (a.y + b.y + c.y) / 3);
a.x = Convert.ToSingle((R(M, a) + r) * Math.Cos(d));
a.y = -Convert.ToSingle((R(M, a) + r) * Math.Sin(d));
b.x = Convert.ToSingle((R(M, b) + r) * Math.Cos(d));
b.y = -Convert.ToSingle((R(M, b) + r) * Math.Sin(d));
c.x = Convert.ToSingle((R(M, c) + r) * Math.Cos(d));
c.y = -Convert.ToSingle((R(M, c) + r) * Math.Sin(d));
}

public void show() //вывод координат
{
Console.WriteLine("a(x,y)={0},{1}\nb(x,y)={2},{3}\nc(x,y)={4},{5}", a.x, a.y, b.x, b.y, c.x, c.y);
}
};

class Program
{
static void Main(string[] args)
{
Point a = new Point(1, 1);
Point b = new Point(3, 3);
Point c = new Point(3, 1);
float r = 6;
double d= 0.5;
float w1 = 1;
float w2 = 0;
float w3 = 0;
float w4 = 0;
Triangle T = new Triangle(a, b, c);
T.show();
Console.ReadLine();
}
}

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
kiramillerthe1
22.09.2021 20:03
Program test;
var  a: array of integer;  b: array of integer;  c: array of integer;  aa, bb, cc: integer;
begin  writeln('Введите размер массива a');  readln(aa);  writeln('Введите размер массива b');  readln(bb);  a := new integer[aa];  b := new integer[bb];  c := new integer[aa + bb];  cc := 0;  aa := 0;  bb := 0;  writeln('Заполнение массива a');  while(aa < Length(a)) do   begin    readln(a[aa]);    aa := aa + 1;  end;  writeln('Заполнение массива b');  while(bb < Length(b)) do   begin    readln(b[bb]);    bb := bb + 1;  end;  while(cc < Length(c)) do   begin    if(cc < Length(a)) then begin      c[cc] := a[cc]    end else begin      c[cc] := b[cc - Length(a)];    end;    cc := cc + 1;  end;  writeln('Полученный массив');  cc:=0;  while(cc < Length(c)) do   begin    writeln(c[cc]);    cc:=cc+1;  end;end.
0,0(0 оценок)
Ответ:
alievaaytan17
08.06.2023 09:58
1) Решение методом рекурсии.
Программа проста в понимании, но неэффективна при больших значениях
var
  n: integer;
function f(i: integer): longint;
begin
  if i < 2 then
    f := 1
  else
    f := f(i - 1) + f(i - 2);
end;
begin
  read(n);
  writeln(f(n));
end.

2) Решение методом динамического программирования. Намного быстрее метода с рекурсией.
var
  i, n: integer;
  f: array[0..50] of longint;
begin
  read(n);
  f[0] := 1;
  f[1] := 1;
  for i := 2 to n do
    f[i] := f[i - 1] + f[i - 2];
  writeln(f[n]);
end.

3) Решение методом моделирования. Использует меньше памяти.
var
  n, a, b, i: integer;
begin
  read(n);
  if n < 2 then
    a := 1
  else
  begin
    a := 0;
    b := 1;
    for i := 0 to n do
    begin
      b := a + b;
      a := b - a;
    end;
  end;
  writeln(a);
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота