Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры C#.doc
Скачиваний:
16
Добавлен:
22.09.2019
Размер:
472.58 Кб
Скачать

35.Архитектура Windows Forms. Класс Form.

Windows Forms (Формы Windows) — это та часть каркаса .NET Framework, кот.поддерживает создание приложений со стандартным графич.пользоват. интерфейсом (GUI) на платформе Windows. Windows Forms создают более однородную (гомогенную) стр-ру и устраняют многие ошибки и противоречия от использования Windows API. Написание приложения с исп-нием Windows Forms потребует меньшего кол-ва кода, чем приложения, кот.исп-т Windows API или MFC. Другая выгода от Windows Forms - используется тот же самый API, независимо от языка прогр-ния. Windows Forms — название той части .NET Framework, кот.отвечает за графич. интерфейс пользователя. Windows Forms «оборачивает» в управляемый код стандартные элементы управления Windows, доступныепри помощи Win32 API. Причем управляеый код - классы, реализующие API для Windows Forms, не за висят от языка разработки. Внутри .NET Framework, Windows Forms реализуется в рамках пространства имён System.Windows.Forms. Формы Windows реализуются набором классов из пр-ва имен Systems.Windows.Forms. В основе почти каждого приложения, написанного с применением Windows Forms, - производный класс от System.WinForms.Form. Приложения, основанные на Windows Forms, которые используют кнопки, списки и другие типы компонентов Windows, используют классы управления System.WinForms, значительно упрощающие программирование управления.

36.Элементы управления формы

В Windows Forms термин "форма" - синоним окна верхнего уровня. Главное окно приложения - форма. Любые другие окна верхнего уровня, окна диалога - также формы. Формы позволяют отображать различные типы окон. Для создания формы, идентичной существующей, в проект следует добавить элемент Inherited Form и указать класс копируемой формы.Приложения, использующие Windows Forms используют классы System.WinForms. Этот раздел включает такие классы, как Form, который моделирует поведение окон или форм; Menu, который представляет меню; Clipboard, который дает возможность приложениям использовать буфер обмена. Другой важный "строительный" блок приложения класс System.WinForms по имени Application. Этот класс содержит стат.метод Run, кот. загружает приложение и отображает окно.

Автоматическое масштабирование формы. Если форма создавалась при размере системного шрифта, установленного через апплет Display (Экран) панели управления в Normal (Обычный) (96 DPI), то пользователь может сменить шрифт на Large (Крупный) (120 DPI) или выбрать какое-нибудь нестандартное значение.Одного масштабирования системных параметров шрифтов недостаточно для поддержки подстройки формы под запросы пользователей.

Создание новой формы.Для создания и отображения новой формы следует вызвать конструктор формы и затем вызвать метод Show. При этом, если создаваемая форма является дочерней, то следует установить значение свойства MdiParent.Например: // Создание нового экземпляра дочерней формы Form childForm = new Form(); // Делаем форму дочерней // для MDI-формы // до ее отображения childForm.MdiParent = this; childForm.Text = "Window " + childFormNumber++; childForm.Show(); // Отображаем дочернюю форму

Закрытие формыЗакрытие формы выполняется вызовом метода Close. Для того, чтобы закрыть все дочерние формы в MDI-приложении, следует использовать свойство MdiChildren, содержащее массив дочерних форм.Например: private void CloseAllToolStripMenuItem_Click( object sender, EventArgs e){ foreach (Form childForm in MdiChildren) { childForm.Close(); } }Масштабирование позволяет размещать элементы управления на форме на этапе разработки при использовании одних настроек системных шрифтов и в то же время добиться корректного отображения формы при других настройках системных шрифтов в период выполнения. Привязка позволяет изменять размеры и перемещать элементы управления с фиксацией их по отношению к определенным краям формы. Стыковка фиксирует элемент управления на конкретном крае. Разделение дает возможность изменять размеры пристыкованных эл-тов управления, а группирование - разбивать элементы управления на небольшие группы, которыми легче управлять.

Массив точек

Point T1 = new Point();

T1.show_point();

sbyte n;

Console.WriteLine("Vvedi kollichestvo tochek");

n = SByte.Parse(Console.ReadLine());

Point[] mas = new Point[n];

int i;

for (i = 0; i < n; i++)

{

mas[i] = new Point();

mas[i].Input_Point();

}

Console.WriteLine("Soderjimoe massiva");

for (i = 0; i < n; i++)

mas[i].show_point();

1. Эволюция языков программирования. Что такое NET?

2.Компоненты платформы NET.

3.Модель выполнения приложения в среде .NET Framework. Промежуточный язык Microsoft (Microsoft Intermediate Language, MSIL). Сборки.

4. Обзор встроенных типов данных C#. Применение встроенной функциональности типов данных.

5.Операции ввода/вывода. Формат вывода. Пространство имён System. Класс System.Math.

6.Операции, операторы и выражения в C# .

Оператор

Операторы

7. Массивы в C# (одномерные и двумерные). Класс System.Random, применение его методов для создания массива случайных чисел. Класс System.Array, использование его методов и свойства Length.

8. Структуры в C#, создание структуры.

9. Понятие объектно-ориентированного программирования.

10. Классы в C#. Члены класса: методы, поля, свойства и события. Форма определения класса.

11. Типы значений и ссылочные типы. Динамическое использование памяти: стеки и кучи. Упаковка и распаковка.

13. Определение пользовательских методов класса. Модификаторы доступа к методам класса. Параметры методов класса, передача аргументов. Модификаторы ref, out, params параметров методов.

14. Возвращение методами объектов класса. Возвращение методами массивов.

15. Общие (статические) члены класса. Доступ к общим членам. Ограничения на static-методы.

16.Область видимости и время существования переменных. Преобразование и приведение типов.

17.Обработка исключительных ситуаций.

18.Перегрузка методов. Перегрузка конструкторов.

19.Перегрузка операторов. Перегрузка бинарных, унарных и операторов отношений.

21.Индексаторы. Специальные приемы построения типов. Создание одномерного индексатора.

22.Создание двумерного индексатора.

23.Механизмы реализации инкапсуляции в C#.

24.Базовые классы и наследование. Доступы к членам классов.

25.Конструкторы и наследование.

26.Ссылки на базовый класс и объекты производных классов.

27.Виртуальные методы и их переопределение.

28.Использование абстрактных классов.

29.Механизмы реализации полиморфизма в C#.

30.Интерфейсы. Реализация интерфейсов. Стандартные интерфейсы среды .NET Framework.

31.Коллекции. Классы коллекций общего назначения.

32.Делегаты. Назначение делегатов. Многоадресатная передача.

33.События. Объявление и генерация событий. Реализация обработчиков событий

34.Обзор технологий программирования Windows-приложений.

35.Архитектура Windows Forms. Класс Form.

36.Элементы управления формы

Дано множество точек на плоскости.Сколько точек этого множества окажуться вне круга, ограниченного окружностью с центром в последней точке этого множества и радиусом, равны 2

bool flag = false;

double radius, s, m;uint kol = 0;

radius = 2;

Circle Okr = new Circle(mas[n] - 1, radius);

for (i = 0; i < n1 - 1; i++){

s = Math.Pow((mas[i].koord_x - mas[0].koord_x), 2) + Math.Pow((mas[i].koord_y - mas[0].koord_y), 2);

m = Math.Pow(radius, 2); if (s > m)

{ kol++; flag = true; } }

if (flag) Console.WriteLine("{0}точек дежит вне круга", kol);

else

Console.WriteLine("Нет точек за кругом");}*/

Дано множество точек на плоскости. Найти такую окружность с центром в начале координат, длина которой больше7

double radius,dlina; uint x=0;

bool flag= false;

Point T=new Point(0,0);

for (i= 0;i<n1;i++) {

Otrezok Otr=new Otrezok(T,mas[i]);

radius=Ort.perimetr();

Circle Okr=new Circle(T,radius);

dlina=Okr.perimetr();

if(dlina>7){ x=i; flag=true;} if(flag)

{ Console.WriteLine("Через точку");

mas[x].show_point();

Console.WriteLine("проходит окрухность, длина которой больше 7");}

else Console.WriteLine("Таких точек нет"):*/

Дано множество точек на плоскости.Сколько точек данного множества не попадает в круг с центром в начале координат и радиусом равным 5 единиц.?

bool flag = false;

double radius, s, m; uint kol = 0;

Point T = new Point(0, 0);

radius = 5;

Circle Okr = new Circle(T, radius);

for(i=0;i<n1-1;i++){

s = Math.Pow((mas[i].koord_x - mas[0].koord_x), 5) + Math.Pow((mas[i].koord_y - mas[0].koord_y), 5);

m = Math.Pow(radius, 5); if (s > m) { kol++; flag = true; } }

if (flag) Console.WriteLine("{0}точек дежит вне круга", kol);

else

Console.WriteLine("Нет точек за кругом");}*/

/*Дано множество точек на плоскости.Сколько точек этого множества окажутсжутся вне круга, ограниченного окружностью с центром в последней точке этого множества и радиусом, равным расстоянию между второй и предпоследней точками этого множества?

double radius, s, m;

Otrezok Otr = new Otrezok(mas[i], mas[n1 - 2]);

radius = Otr.perimetr();

Circle Okr = new Circle(mas[n1 - 1], radius);

Console.WriteLine("\nТочка с координатами");

for (i = 0; i < n1; i++)

{

s = Math.Pow((mas[i].koord_x - mas[n1 - 1].koord_x), 5) + Math.Pow((mas[i].koord_y - mas[n1 - 1].koord_y), 5);

m = Math.Pow(radius, 5);

if (s > m) { Console.WriteLine("\t-лежит вне окружности\t");

mas[i].show_point(); } }

Дано множество точек на плоскости.Указать в нём две точки, чтобы прямая, проходящая через них, делила 2и 4 координатные углы пополам.

bool flag = false, flag1;

uint j, x = 0, y = 0;

double m1, m2, m3, m4;

for (i=0;i<n1-1;i++)

for(j=i+1;j<n1:j++){ Prjamaja Pr=new Prjamaja(mas[i],mas[j]);

if(Pr.Is_Prjamaja)

{m1=mas[i].koord_x; m2=mas[i].koord_y; m3=mas[j].koord_x;

m4=mas[j].koord_y;

if(Math.Abs(m1)==Math.Abs(m2)&& Math.Abs(m3)==Math.Abs(m4))

flag=true; else flag1=false;

if (flag1&&((m1>0 && m2<0||m3>0&&m4<0)||(m1<0&&m2>0||m3<0&&m4>0)))

{x=i;y=j;flag=true;}}}

if(flag==false)Console.WriteLine("Таких точек нет");

else { Console.WriteLine("Через точки:");

mas[x].show_point(); mas[y].show_point(); Console.WriteLine("проходит прямая, делящая 2 и 4 координатные углы попалам");*/

/*Дано множество точек на плоскости. Указать в нём две такие точки, чтобы отрезок, концами которого они являются, был паралелен оси ОХ

bool flag = false;

uint j, x = 0, y = 0;

for(i=0;i<n1-1;i++) for(j=i+1;j<n1;j++) {

Otrezok Otr=new Otrezok(mas[i],mas[j]);

if(Otr.Is_Otrezok && mas[i].koord_y==mas[j].koord_y) {flag=true;x=if;y=j;}}

if(flag)

{Console.WriteLine("Через точки");

mas[x].show_point(); mas[y].show_point();

Console.WriteLine("проходит отрезок паралельный оси ОХ");

Дано множество точек на плоскостиюМожно ли указать пару точуе M и N в этом множестве таких, чтобы отрезок MN был перпендикулярен оси ОУ и находился в нижней полеплоскости?

uint j; double y1, y2; bool flag = false;

Console.WriteLine("Через точки проходит отрезок перпендикулярный ОУ в нижней полеплоскости,\n их координаты:");

for (i = 0; i < n1; i++) {

Otrezok Otr = new Otrezok(mas[i], mas[j]);

y1 = mas[i].koord_y;y2 = mas[j].koord_y;

if (Otr.Is_Otrezok){ if (y1 == y2 && y1 < 0 && y2 < 0) { mas[i].show.point(); mas[j].show_point(); Console.WriteLine("\n");

flag = true; }}}

if (flag == false) Console.WriteLine("Таких точек нет");*/

/*Дано множество точек на плоскости.Выбрать, если возможно, в этом множестве 2 точки так , чтобы из оставшихся точек ни одна больше не принадлежала прямой проходящей через выбранные 2 точки.

uint x = 0, y = 0, I, j; bool flag = false; double a, b, c, k, b0;

for(i=0;i<n1-1;i++) for (j=i+1;j<n1;j++){

Prjamaja Pr=new Prjamaja(mas[i],mas[j]); a=Pr.Koef_a; b=Pr.Koef_b; c=Pr.Koef_c; k=-a/b;

b0=-c/b;for (I=0;I<n1;I++)

{if((mas[I].koord_y>k*mas[I].koord_x+b0)||(mas[I].koord_y<k*mas[I].koord_x+b0)){

flag=true;x=if;

y=j;}}}

if(flag){

Console.WriteLine("Это точки:");

mas[x].show_point();

mas[y].show_point();}

else Console.WriteLine("Не возможно выбрать такие точки")

/*Дано множество точек на плоскости. можно ли в данном множестве точек найти тройку точек X,Y,Zтак, чтобы площадь треугольника XYZ была не меньше 7кв.ед.?

bool flag = false;uint j, k, x = 0, y = 0, z = 0;

double pl; for (i = 0; i < n1 - 2; i++)

{for (j = i + 1; j < n1 - 1; i++){ for (k = j + 1; k < n1; k++)

{Triangle Tr = new Triangle(mas[i], mas[j], mas[k]); if (Tr.Is_Triangle){

pl = Tr.area();if (pl >= 7){x = i; y = j; z = k;flag = true;}}}} } if (flag){

Console.WriteLine("Такой треугольник существует его вершины:");

mas[x].show_point(); mas[y].show_point(); mas[z].show_point();

}else { Console.WriteLine("Такой треугольник не существует"); }*/

/*Дано множество точек на плоскости. Можно ли найти такие точки в данном множестве, которые являлись бы вершинами двух равных между собой треугольнтков?

uint j, k, m, n, l;double s1, s2, p1, p2;

bool flag = false; Point[] index = new Point[6];

for(i=0;i<n1-2;i++){ for(j=i+1;j<n1-1;j++){

for(k=j+1;k<n1;k++){ Triangle Tr1=new Triangle(mas[i],mas[j],mas[k]);

s1=Tr1.area(); p1=Tr1.perimetr(); for(m=0;m<n1-2;m++){

for(n=m+1;n<n1-1;n++){ for(l=n+1;l<n1;l++){

if((mas[i]==mas[m])&&(mas[j]==mas[n])&&(mas[k]==mas[l])) flag=false;

else (Triangle Tr=new Triangle(mas[m],mas[n],mas[l])); s2=Tr.area();p2=Tr.perimetr(); if(s1==s2&&p1==p2){ index[0]=mas[i];index[1]=mas[j];

index[2]=mas[k];index[3]=mas[m];

index[4]=mas[n];index[5]=mas[l]; flag=true;}}}}}}}if(flag){

Console.WriteLine("\nТакие треугольники существуют и их вершины"); index[0].show_point(); index[1].show_point(); index[2].show_point(); Console.WriteLine("\n"); index[3].show_point();

index[4].show_point(); index[5].show_point();}

else Console.WriteLine("\nТакиз треугольников нет");*/

/*Дано множество точек на плоскости. Указать три точки X,Y,Z так, чтобы Х находилась в 1-ом координатном углу,У- dо атором,Z в третьем координатном углу и треугольник

XYZ имел площадь, меньшую 5кв.ед.

uint j, k, x = 0, y = 0, z = 0;

double pl, m1, m2, m3, m4, m5, m6;

bool flag = false;

for (i = 0; i < n1 - 2; i++)

{

for (j = i + 1; j < n1 - 1; j++)

{

for (k = j + 1; k < n1; k++)

{

m1 = mas[i].koord_x;

m2 = mas[i].koord_y;

m3 = mas[j].koord_x;

m4 = mas[j].koord_y;

m5 = mas[k].koord_x;

m6 = mas[k].koord_y;

if (m1 > 0 && m5 < 0 && m6 < 0) {

Triangle Tr = new Trianfle(mas[i], mas[j], mas[k]);

pl = Tr.area(); if (pl < 5) {

flag = true; x = i; y = j; z = k; } } } } } if (flag) {

Console.WriteLine("Такой треугольник существует, его вершины:");

mas[x].show_point();

mas[y].show_point();

mas[z].show_point(); }

else Console.WriteLine("Такой треугольник не существует");*/

/*Даны множества A и B, состоящие соответственно из N1 и N2 точек.Найти минимальное расстояние между точками этих множеств и сами точки, расположенные на этом расстоянии (вначале выводится точка из множества A, затем точка из множества B). */

uint i, j, m = 0, n = 0;

Console.WriteLine("Ввведите количество точек в множестве А");

uint N1 = UInt32.Parse(Console.ReadLine());

Point[] mas1 = new Point[N1];

for (i = 0; i < N1; i++){ mas1[i] = new Point();

mas1[i].Input_Point(); }

for (i = 0; i < N1; i++)mas1[i].show_point();

Console.WriteLine("Введите количество точек в множестве В");

uint N2 = UInt32.Parse(Console.ReadLine());

Point[] mas2 = new Point[N2]; for (i = 0; i < N2; i++){

mas2[i] = new Point();mas2[i].Input_Point();}

for (i = 0; i < N2; i++) mas2[i].show_point();

Otrezok Otr = new Otrezok(mas1[0], mas2[0]);

double rasst = Otr.perimetr(); for(i=0;i<N1;i++)

for (j = 0; j < N2; j++){

Otrezok Ot1 = new Otrezok(mas1[i], mas2[j]);

if (rasst > Ot1.perimetr()){ rasst = Ot1.perimetr();m = i; n = j;}}

Console.WriteLine("\n Минимальное расстояние между точками этих множеств = {0:#.####},", rasst);

Console.Write("а именно между точками");

mas1[m].show_point();

mas2[n].show_point();*/

Дано множество точек на плоскости. Сколько отрезков можно построить на данном множестве, один из концов которых лежит на оси ОY? */

uint i, j, kol = 0;

Console.WriteLine("Введите количество точек в множестве");

uint n1 = UInt32.Parse(Console.ReadLine());

Point[] mas = new Point[n1];

for (i = 0; i < n1; i++){

mas[i] = new Point();mas[i].Input_Point();}

Console.WriteLine("Множество:"); for (i = 0; i < n1; i++)

mas[i].show_point();for (i = 0; i < n1; i++){

for (j = 0; j < n1; j++){

Otrezok Ot2 = new Otrezok(mas[i], mas[j]);

if (Ot2.Is_Otrezok){

if (mas[i].koord_x == 0 || mas[j].koord_x == 0){

kol++;}}}}

Console.WriteLine("Всего можно построить{0} отрезков",kol/2);

Дано множество точек на плоскости. Сколько точек не принадлежит прямой, проходящей через две первые точки?

uint i, kol1 = 0, kol2 = 0;

Console.WriteLine("Введите количество точек в множестве");

uint n1 = UInt32.Parse(Console.ReadLine());

Point[] mas = new Point[n1];

for(i=0;i<n1;i++)

{mas[i]= new Point();mas[i].Input_Point();}

Console.WriteLine("Множество:");

for (i = 0; i < n1; i++)mas[i].show_point();

Prjamaja Pr = new Prjamaja(mas[0], mas[1]);

if(Pr.Is_Prjamaja){for(i=2;i<n1;i++){

if ((mas[i].koord_x-mas[0].koord_x)==(mas[i].koord_y-mas[0].koord_y)) kol1++;else kol2++;}}else kol2=0;

Console.WriteLine("{0} точек не принадлежат прямой, и {1} точек лежет на прямой",kol1,kol2);

Дано множество точек на плоскости. Сколько можно построить отрезков на данном множестве, имеющих одинаковую длину?

sbyte n;int N = 1;

Console.WriteLine("Введите колличество элементов в массиве точек.");

int n = Int32.Parse(Console.ReadLine());

Point[] mas = new Point[n];

for (int i = 0; i < n; i++){

mas[i] = new Point();

mas[i].Input_Point();}

Console.WriteLine("Введенные координаты:");

for (int i = 0; i < n; i++){

mas[i].show_point();}if (n < 2){N = 0;

Console.WriteLine("На плоскости нет отрезков!!!");}

if(n==2) N=1;if(n>2)

for(sbyte i=2;i<n;i++){N=N+i;}int t = 0;

int kol = 0;Otrezok[]mass=new Otrezok[N];

double[] dlin=new double[N]; int I = 0;

while (t != N){

for (int j = I + 1; j < n; j++){

mass[t] = new Otrezok(mas[I], mas[j]);

dlin[t] = mass[t].perimetr();

Console.WriteLine("Длинна = {0} ", dlin[t]);t++;}

I++;}for (int i = 0; i < N; i++){

for (int j = 0; j < N; j++){

if ((dlin[i]==dlin[j]) && i != j){ kol++;j = N;}} }Console.WriteLine("Ответ: "+kol);*/

Дано множество точек на плоскости. Найти такую окружность

с центром в начале координат, на которой лежит наибольшее

количество точек данного множества.*/

double r,r1;int j,i,kol=0,max=0,nom=0;

Console.WriteLine("Введите кол-во элементов в массиве точек.");

int k = Int32.Parse(Console.ReadLine());Point[] mas = new Point[k];

Point T4 = new Point(0, 0);T4.show_point();

for ( i = 0; i < k; i++) {mas[i] = new Point();

mas[i].Input_Point();}

Console.WriteLine("Массив точек:");

for ( i = 0; i < k; i++) mas[i].show_point();

for (i = 0; i < k-1; i++){

Otrezok otr = new Otrezok(T4,mas[i] );r = otr.perimetr();

Circle cr = new Circle(T4,r);if (cr.Is_Circle){kol = 0;

for (j = i + 1; j < k; j++){

Otrezok otr1 = new Otrezok(T4,mas[j]);r1=otr1.perimetr();if (r == r1)

kol++;if (kol > max){max = kol;

nom=i;}}}} Console.WriteLine("окружность построена с радиусом , конец лежит в точке с номером " + nom); mas[nom].show_point();

Дано множество точек на плоскости. Можно ли указать пару точек M и N в этом множестве таких, чтобы отрезок MN был перпендикулярен оси Ox и находился в нижней полуплоскости?

uint i,j,kol=0;bool f = false;

Console.WriteLine("vvedite kol-vo tochek v mnozhestve");

uint k = UInt32.Parse(Console.ReadLine());

Point[] mas = new Point[k];for (i = 0; i < k; i++){mas[i] = new Point();mas[i].Input_Point();}Console.WriteLine("mnozhestvo :");for (i = 0; i < k; i++)

mas[i].show_point();

for (i = 0; i < k-1; i++){for (j = i+1; j < k; j++){Otrezok Ot2 = new Otrezok(mas[i], mas[j]);

{if (mas[i].koord_x == mas[j].koord_x && mas[i].koord_y < 0 && mas[j].koord_y < 0 ){

kol++;Console.WriteLine(" вот эти точки ");

mas[i].show_point();mas[j].show_point();}}}}

if (kol == 0)Console.WriteLine("нет ни одного отрезка");

Else Console.WriteLine("пара таких точек : "+ (kol/2));

/* Дано множество A из N точек на плоскости. Найти точку (вывести её номер и значение) среди всех точек этого множества,лежащих в первой или в третьей четверти, наиболее близкую к началу координат. Если таких точек нет, то вывести точку с нулевыми координатами.*/

int nom = 0;

double min,dlin=0;

Point T4 = new Point(1000000, 1000000);

Otrezok Otr3=new Otrezok(T1,T4);

min=Otr3.perimetr();

/*Console.WriteLine("minimym" + min);*/

for (i = 0; i < n; i++)

{

if (((mas[i].koord_x>0)&&(mas[i].koord_y>0))||((mas[i].koord_x<0)&&(mas[i].koord_y<0)))

{

Otrezok Otr4 = new Otrezok(T1, mas[i]);

dlin=Otr4.perimetr();

/*Console.WriteLine("Dlina" + dlin);*/

if (min>dlin)

{

min = dlin;

/*Console.WriteLine("minimym" + min);*/

nom = i;

}

}

}

i = nom;

Console.WriteLine("Точка наиболее близкая к началу координат");

if (min<=1000000)

mas[i].show_point();

else

T1.show_point();

Дано множество точек на плоскости. Найти такую окружность с

центром в начале координат, на которой лежит наибольшее количество точек данного множества.*/

Point T1 = new Point(0, 0);

T1.show_point();

sbyte n;

Console.WriteLine("Vvedi kollichestvo tochek");

n = SByte.Parse(Console.ReadLine());

Point[] mas = new Point[n];

int i, kol = 0;

for (i = 0; i < n; i++)

{

mas[i] = new Point();

mas[i].Input_Point();

}

Console.WriteLine("Soderjimoe massiva");

for (i = 0; i < n; i++)

mas[i].show_point();

int max = 0, j=0 ;

double per=0,k=0,dl=0;

for (i = 0; i < n; i++)

{

Otrezok rd = new Otrezok(T1, mas[i]);

per=rd.perimetr();

Console.WriteLine("radiys" + per);

for (j = i + 1; j < n; j++)

{

Otrezok otr = new Otrezok(T1, mas[j]);

dl = otr.perimetr();

if (dl == per)

kol++;

}

if (max < kol)

{

max = kol;

k = per;

}

}

Console.WriteLine("Okrygnost s radiysom "+k);