Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/48: Рейтинг темы: голосов - 48, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 08.11.2021
Сообщений: 28

Определение площади четырехугольника с заданными координатами его вершин как сумму площадей двух треугольников

04.12.2021, 19:29. Показов 9645. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу определения площади четырехугольника с заданными
координатами его вершин (x1,y1), (x2,y2), (x3,y3), (x4,y4) как сумму
площадей двух треугольников. Площадь треугольника, определенную по
координатам вершин, рассчитать с помощью функции.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.12.2021, 19:29
Ответы с готовыми решениями:

программа определения площади шестиугольника с заданными координатами вершин как сумму площадей четырех треугольников
Написать программу определения площади шестиугольника с заданными координатами его вершин (x1,y1), (x2,y2), (x3,y3), (x4,y4),...

Три треугольника заданы координатами своих вершин. Написать программу вычисления площадей треугольников и определения минимальной площади
Сорри, пропало соединение с интернетом Ребят, помогите кто сможет) Дано задание: "три треугольника заданы координатами своих вершин....

Определение площади шестиугольника с заданными координатами вершин
Написать программу определения площади шестиугольника с заданными координатами его вершин (x1,y1), (x2,y2), (x3,y3), (x4,y4),...

56
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3384 / 2704 / 573
Регистрация: 04.09.2018
Сообщений: 8,517
Записей в блоге: 3
04.12.2021, 20:50
SquizySS,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        static void Main( string[] args )
        {
            Point[] p = new Point[ 4 ];
 
            Console.WriteLine( "Введите точки вершин прямоугольника,\nначиная с левой верхней по часовой стрелке" );
            for ( int i = 0; i < 4; i++ )
            {
                Console.Write( $"Координата {i + 1}-й точки (x,y): " );
                string[] inp = Console.ReadLine().Split( ',', '.', ' ' );
                p[ i ].x = double.Parse( inp[ 0 ] );
                p[ i ].y = double.Parse( inp[ 1 ] );
            }
 
            Console.WriteLine( $"Площадь прямоугольника = {2.0 * TriSquare( p[ 0 ], p[ 1 ], p[ 2 ] )} кв. единиц" );
            Console.Read();
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        struct Point
        {
            public double x;
            public double y;
            public Point( double x, double y )
            {
                this.x = x; this.y = y;
            }
        }
 
        static double TriSquare( Point p1, Point p2, Point p3 )
        {
            return 0.5 * Math.Abs( ( p1.x - p3.x ) * ( p2.y - p3.y ) - ( p2.x - p3.x ) * ( p1.y - p3.y ) );
        }
Code
1
2
3
4
5
6
7
Введите точки вершин прямоугольника,
начиная с левой верхней по часовой стрелке
Координата 1-й точки (x,y): 1,3
Координата 2-й точки (x,y): 5,3
Координата 3-й точки (x,y): 5,1
Координата 4-й точки (x,y): 1,1
Площадь прямоугольника = 8 кв. единиц
Миниатюры
Определение площади четырехугольника с заданными координатами его вершин как сумму площадей двух треугольников  
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
04.12.2021, 21:10
wizard41, а какой результат будет для точек: (1, 3), (2, 2), (5, 1), (1, 1)?
Или для: (1, 3), (5, 1), (5, 2), (5, 3), (1, 1)?
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
04.12.2021, 21:10
А задача не такая простая, как показалась вначале. Ведь четырёхугольник может быть совершенно разной формы, в том числе выпуклый или вогнутый.
2
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
04.12.2021, 21:16
Цитата Сообщение от SquizySS Посмотреть сообщение
определения площади четырехугольника с заданными
координатами его вершин
SquizySS, четырехугольника выпуклый или произвольный?
Для произвольного это весьма непростая задача.
В вашем учебном плане вы проходили соответствующие темы?

Добавлено через 1 минуту
Цитата Сообщение от samana Посмотреть сообщение
Ведь четырёхугольник может быть совершенно разной формы, в том числе выпуклый или вогнутый.
Ещё может быть и с пересекающимися сторонами - это самый сложный случай.

Добавлено через 3 минуты
Если нет пересекающихся сторон, то любой многоугольник достаточно просто считается методом трапеций (следствие из численного интегрирования по периметру).
А вот для пересекающихся сторон всё резко усложняется.
1
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
04.12.2021, 21:24
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Ещё может быть и с пересекающимися сторонами - это самый сложный случай.
Да, тоже согласен. Причём в таком случае нет однозначного варианта внешнего вида такой фигуры, так как её можно "разбить" разными способами

и т.п.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
04.12.2021, 21:54
Цитата Сообщение от samana Посмотреть сообщение
так как её можно "разбить" разными способами
Такие не нужно разбивать - их надо считать интегралом (метод трапеций).

Проблема вот с такими:
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
04.12.2021, 22:12
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Проблема вот с такими:
Тогда нужно ещё уточнить - влияет ли последовательность вершин на формирования "полигона". Я думал что нужно выстроить вменяемый четырёхугольник - просто из набора четырёх вершин, независимо в каком порядке они поступили.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
04.12.2021, 22:18
Цитата Сообщение от samana Посмотреть сообщение
Я думал что нужно выстроить вменяемый четырёхугольник - просто из набора четырёх вершин, независимо в каком порядке они поступили.
Вот этот вопрос я и адресовал TC.
Задача имеет решение для любых типов четырёхугольников.
Но решение это сложное.
И мне сомнительно, что для уровня знаний ТС (близкого к нулю) ему нужно такое сложное решение.
Скорее всего либо что-то упущено в условиях задачи, либо какие-то условия подразумеваются учебной темой в рамках которой задано это задание.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3384 / 2704 / 573
Регистрация: 04.09.2018
Сообщений: 8,517
Записей в блоге: 3
04.12.2021, 23:05
Цитата Сообщение от Элд Хасп Посмотреть сообщение
wizard41, а какой результат будет для точек:
Ну я рассматривал самый обычный случай. ТС не уточняет возможных видов прямоугольников..

Добавлено через 1 минуту
Цитата Сообщение от SquizySS Посмотреть сообщение
площади четырехугольника
А, ну да. Речь идет о 4-х угольнике же.. Что-то я затупил, подумал о прямоугольнике.

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Проблема вот с такими:
Особой проблемы не вижу...

Добавлено через 40 секунд
Цитата Сообщение от wizard41 Посмотреть сообщение
Особой проблемы не вижу...
Цитата Сообщение от Элд Хасп Посмотреть сообщение
И мне сомнительно, что для уровня знаний ТС (близкого к нулю) ему нужно такое сложное решение.
А с этим согласен.

Добавлено через 6 минут
Цитата Сообщение от samana Посмотреть сообщение
влияет ли последовательность вершин на формирования "полигона".
Думаю что да. Мы как бы "рисуем" линии одну за другой. Иначе как разобрать соединения точек по координатам?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3384 / 2704 / 573
Регистрация: 04.09.2018
Сообщений: 8,517
Записей в блоге: 3
05.12.2021, 11:09
Цитата Сообщение от samana Посмотреть сообщение
Причём в таком случае нет однозначного варианта
В таком виде фигуры - надо искать смежную сторону и делить треугольники по ней.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Проблема вот с такими:
А в этом случае нужно сперва понять, что линии пересекаются и искать точку пересечения. Она и будет общей вершиной двух треугольников.
Но что-то я сомневаюсь, что у ТС такое задание... Наверное он что-то напутал или не дописал.
0
 Аватар для roach1967
983 / 463 / 233
Регистрация: 27.06.2014
Сообщений: 1,033
05.12.2021, 17:05
Тут пришла такая мысль:
1) задаём две диагонали (x1,y1)-(x3,y3) и (x2,y2)-(x4y4);
2) проверяем, какие диагонали находятся внутри;
3) если обе, то считаем как обычный выпуклый четырёхугольник;
4) если только одна, то задаём её как смежную сторону двух треугольников;
5) если обе диагонали снаружи, то ищем смежную точку пересечения...
зы: какой алгоритм проверки диагонали внутри фигуры?

Добавлено через 9 минут
Проверить на пересекаемость сторон просто:
проверить по алгоритму пересекаемость двух пар отрезков
1 - (x1,y1)(x2,y2) + (x3,y3)(x4,y4)
2 - (x1,y1)(x4,y4) + (x2,y2)(x3,y3)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3384 / 2704 / 573
Регистрация: 04.09.2018
Сообщений: 8,517
Записей в блоге: 3
05.12.2021, 17:32
Цитата Сообщение от roach1967 Посмотреть сообщение
Проверить на пересекаемость сторон просто:
А никто и не говорил что это сложно ).
Цитата Сообщение от roach1967 Посмотреть сообщение
зы: какой алгоритм проверки диагонали внутри фигуры?
сперва определяем геометрические параметры фигуры на плоскости, т.е. как она расположена. Выделяем крайние точки, допустим, они находятся в направлении оси Ox. Тогда, смотрим расположение точек вдоль оси Oy - средняя точка с какой-либо стороны и крайняя с другой будут определять линию смежной стороны фигуры.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
05.12.2021, 18:23
wizard41, может привру - забыл уже.
Вроде, с какой стороны точка от отрезка показывает знак произведения вектора совпадающего с отрезком и вектора из одного его конца на точку.
Для разбиения надо выбрать вершину для которой скалярное произведение с соседними вершинами имеет разные знаки.

Добавлено через 1 минуту
Если для двух соседних вершин векторные произведения с одинаковым знаком - значит это четырёхугольник с пересекающимися сторонами.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3384 / 2704 / 573
Регистрация: 04.09.2018
Сообщений: 8,517
Записей в блоге: 3
05.12.2021, 18:41
Цитата Сообщение от Элд Хасп Посмотреть сообщение
может привру - забыл уже.
Да, почти так, но немного приврал ))

Добавлено через 1 минуту
Я конечно тоже уже не все детали помню, из аналитической геометрии. Нужно интернеты ковырять, то да се... Вообщем ждем что ТС скажет, а там будет видно в какую сторону плясать.

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Для разбиения надо выбрать вершину для которой скалярное произведение с соседними вершинами имеет разные знаки.
Тут можно даже немного проще - через разницу в координатах точек (длины отрезков). Какая длиннее - та и будет линией разрыва.
0
2 / 2 / 0
Регистрация: 22.11.2021
Сообщений: 8
05.12.2021, 18:51
Строго не судите,сам только недавно начал изучение,на этих вопросиках пытаюсь набивать руку.У меня получился вот такой вот вариант.Мб автору будем чем-то полезен)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System;
 
namespace ConsoleApp1223
{
    class Program
    {
        static void Main(string[] args)
        {
            /*  Написать программу определения площади четырехугольника с заданными
    координатами его вершин (x1,y1), (x2,y2), (x3,y3), (x4,y4) как сумму
    площадей двух треугольников. Площадь треугольника, определенную по
    координатам вершин, рассчитать с помощью функции.     */
 
            Console.WriteLine("Введите координаты вершины 1:");
            Point A = new Point();
            A.X = Convert.ToDouble(Console.ReadLine());
            A.Y = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите координаты вершины 2:");
            Point B = new Point();
            B.X = Convert.ToDouble(Console.ReadLine());
            B.Y = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите координаты вершины 3:");
            Point C = new Point();
            C.X = Convert.ToDouble(Console.ReadLine());
            C.Y = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Введите координаты вершины 4:");
            Point D = new Point();
            D.X = Convert.ToDouble(Console.ReadLine());
            D.Y = Convert.ToDouble(Console.ReadLine());
 
            double side_A = GetSide( A, B);
            double side_B = GetSide(B, C);
            double side_C = GetSide(C, A);
 
            double side_Q = GetSide(A, C);
            double side_W = GetSide(C, D);
            double side_E= GetSide(D, A);
 
           
            double square_A = GetSquareOfTriangle(side_A,side_B,side_C);
            Console.WriteLine($"Площадь первого треугольника:{square_A}");
 
            double square_B = GetSquareOfTriangle(side_Q,side_W,side_E);
            Console.WriteLine($"Площадь второго треугольника:{square_B}");
 
            int squareOfSquare = GetSquareOfSquare(square_A, square_B);
 
            Console.WriteLine($"Площадь четырехугольника:{squareOfSquare}");
            Console.ReadLine();
        }
 
        /// <summary>
        /// Находим длину отрезка по двум вершинам
        /// </summary>
        /// <param name="A"></param>
        /// <param name="B"></param>
        /// <returns></returns>
        public static double GetSide(Point A,Point B)
        {
            double side = Math.Sqrt(Math.Pow((B.X - A.X), 2) + Math.Pow((B.Y - A.Y), 2));
            return side;
        }
        /// <summary>
        /// По трем "отрезкам" (Сторонам) по Формуле Герона находим площадь треугольника
        /// </summary>
        /// <param name="side_A"></param>
        /// <param name="side_B"></param>
        /// <param name="side_C"></param>
        /// <returns></returns>
        public static double GetSquareOfTriangle(double side_A,double side_B,double side_C)
        {
            double p = (side_A + side_B + side_C) / 2;
            double square = Math.Sqrt(p * (p - side_A) * (p - side_B) * (p - side_C));
            return square;
        }
        /// <summary>
        /// По двум площадям треугольников через сумму находим площадь нашего четыреугольника)
        /// </summary>
        /// <param name="square_1"></param>
        /// <param name="square_2"></param>
        /// <returns></returns>
        public static int GetSquareOfSquare(double square_1,double square_2)
        {
            int squareOfSquare = (int)(square_1 + square_2);
            return squareOfSquare;
        }
 
    }
 
    class Point
    {
        public double X { get; set; }
        public double Y { get; set; }
    }
}
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
05.12.2021, 18:57
Цитата Сообщение от wizard41 Посмотреть сообщение
Да, почти так, но немного приврал ))
Описка.
Сначала написал правильно, а потом нет.

Имел ввиду векторное произведение в трёхмерном пространстве.
Для плоскости надо задать z=0.

А во втором предложении написал "скалярное произведение" - это не верно.

Цитата Сообщение от wizard41 Посмотреть сообщение
ут можно даже немного проще - через разницу в координатах точек (длины отрезков). Какая длиннее - та и будет линией разрыва.
Вон выше дал пример samana.
Для его примера надо брать короткую диагональ..

Добавлено через 4 минуты
Цитата Сообщение от CandyKen Посмотреть сообщение
Строго не судите,сам только недавно начал изучение,на этих вопросиках пытаюсь набивать руку.
Это правильно.
Программирование - это практическая дисциплина.
И никакая теория практику не заменит.
Надо постоянно решать разные задачи.


Цитата Сообщение от CandyKen Посмотреть сообщение
У меня получился вот такой вот вариант.
Близкий вариант дал в самом начале wizard41.
Проблема в том, что это подходит только для выпуклых четырёхугольников.
Для вогнутых может давать ошибку, а для пересекающихся - точно даст ошибку.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3384 / 2704 / 573
Регистрация: 04.09.2018
Сообщений: 8,517
Записей в блоге: 3
05.12.2021, 19:06
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Имел ввиду векторное произведение в трёхмерном пространстве.
Для плоскости надо задать z=0.
Точно.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вон выше дал пример samana.
Дык я его фигуры вертел крутил в голове, примерный план составил. Если на самом деле нужно будет вычислять выпуклые/впуклые 4-х-угольники, то... так и будем действовать.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
надо брать короткую диагональ..
Ать! не всегда ) Все будет зависеть от развернутости фигуры и крайних точек (две или одна с одной стороны).

Добавлено через 8 минут
Элд Хасп, а что если нам отвязаться от порядка ввода координат и искать два треугольника, рассеченных двумя точками, лежащими между самыми крайними, исключая при этом "лишний" треугольник?
Попробую пояснить свою мысль графически..
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,038
Записей в блоге: 2
05.12.2021, 19:11
Цитата Сообщение от wizard41 Посмотреть сообщение
Ать! не всегда ) Все будет зависеть от развернутости фигуры и крайних точек (две или одна с одной стороны).
Разве? Для вогнутого непересекающегося короткая диагональ всегда будет внутри четырёхугольника.
Или ошибаюсь?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3384 / 2704 / 573
Регистрация: 04.09.2018
Сообщений: 8,517
Записей в блоге: 3
05.12.2021, 19:16
типа такого:

1. Выясняем, по какую сторону линии АС лежит точка В. Если "справа" для данной фигуры - 4-х-угольник вогнутый.
2. Далее мы понимаем, что точка В лежит между А и С, следовательно, она является одной из точек разделительной линии BD.
3. Т.к. в п.1 мы выяснили, что фигура вогнутая, то треугольник ABC исключается из расчетов
4. ... что-то там еще
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2021, 19:16
Помогаю со студенческими работами здесь

Определение периметра четырехугольника, заданного координатами его вершин
Выбрав способ изображения точки на плоскости в виде записи с двумя полями x, y типа float, напишите программу, определяющую периметр...

Найти площади двух прямоугольных треугольников, заданных координатами вершин
Написать программу: Найти площади двух прямоугольных треугольников, заданных координатами вершин. В функции вычисляйте длину стороны

Определение наибольшей площади двух треугольников по координатам их вершин
Определение наибольшей площади двух треугольников по координатам их вершин. :расстояние между точками A(x1,y1) B(X2,y2) по формуле...

Докажите, что сумма площадей треугольников не меньше площади четырёхугольника
Готовлюсь к ЕГЭ и не могу решить некоторые задания, так как ответы сзади учебника хоть и есть, а так хочется решения узнать всё-таки, что...

Найти площадь четырехугольника как сумму площадей треугольников
Выпуклый четырехугольник задан координатами своих вершин. Найти площадь этого четырехугольника как сумму площадей треугольников. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru