Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
 Аватар для Костя Остертаг
35 / 32 / 9
Регистрация: 17.09.2010
Сообщений: 210
.NET 4.x

Класс представляющий треугольник.

08.02.2011, 14:34. Показов 4559. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер ув. программисты, в своей лабораторной работе столкнулся со сл. проблемой и вопросами.
Описать класс, представляющий треугольник. Предусмотреть методы
для создания объектов,
вычисления площади, периметра и точки пересечения медиан.
Описать свойства для получения состояния объекта.
При невозможности построения треугольника выбрасывается исключение.
Написать программу, демонстрирующую все разработанные элементы класса.
Вот код программы, посмотрите:
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
using System;
 
namespace ConsoleApplication1
{
    class TwoDShape 
    {
        public double width;
        public double height;
 
        public void showDim() 
        {
           Console.WriteLine("Ширина и высота равны " + width + " и " + height); 
        }
        // здесь должен быть расчет площади
        public void area() 
        {
            int square=0;
            Console.WriteLine();
        }
    }
// Класс Triangle выводится из класса TwoDShape. 
    class Triangle : TwoDShape 
    {
        public string style;
 
        public void showStyle() 
        {
            Console.WriteLine("Тип треугольника: " + style);
        }
     } 
 
    class Program
    {
        static void Main(string[] args)
        {
            Triangle t1 = new Triangle();
            t1.width = 4.0;
            t1.height = 4.0;
            t1.style = "равнобедренный";
            Triangle t2 = new Triangle();
            t2.width = 8.0;
            t2.height = 12.0;
            t2.style = "прямоугольный";
            Console.WriteLine("Информация о tl: ");
            t1.showStyle();
            t1.showDim() ;
            Console.WriteLine("Площадь равна "); t1.area();
            Console.WriteLine();
            Console.WriteLine("Информация о t2: "); t2.showStyle(); t2.showDim();
            Console.WriteLine("Площадь равна "); t2.area();
            Console.ReadKey();
        }
    }
}
Помогите пожалуйста, а то у меня как некоторые уже знают проблемы с математикой и геометрией.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2011, 14:34
Ответы с готовыми решениями:

Описать класс, представляющий треугольник
Описать класс, представляющий треугольник. Предусмотреть методы для создания обьекта, перемещения на плоскости, изменения размеров. Описать...

C# Шарп. Описать класс треугольник
Народ помогите пожалуйста с программой на C# Шарп учусь на 2 курсе "СибГУТИ" Пример: Описать класс, представляющий треугольник....

Описать класс, представляющий треугольник
Добрый вечер. Очень нужна помощь в решении задачи на тему Простейшие классы!! Вот сама задача: Описать класс, представляющий...

5
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
08.02.2011, 19:28
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Triangle
{
    public Vector2 A {get; set;}
    public Vector2 B {get; set;}
    public Vector2 C {get; set;}
    
    public Triangle(Vector2 a, Vector2 b, Vector2 c)
    {
        this.A = a;
        this.B = b;
        this.C = c;
    }
 
   public float Square()
   {
        float a = (B - A).Length();
        float b = (C - B).Length();
        float c = (C - A).Length();
        float p = (a + b + c) / 2f;
        float s = (float)Math.Sqrt(p * (p - a) * (p - b) * (p - c));
        return s;
   }
}
Ну, а дальше сами.

P.S. В коде использованы: это и это
2
 Аватар для Костя Остертаг
35 / 32 / 9
Регистрация: 17.09.2010
Сообщений: 210
08.02.2011, 22:22  [ТС]
Я в принципе понял что вы написали, если я не ошибаюсь это точно такая же не законченная программа которую написал и я только другим и более интуитивным кодом. Или поясните если я не так понял. Благодарю за то что отозвались.
1
 Аватар для BrumbleHorse
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
09.02.2011, 03:04
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
using System;
using System.Collections.Generic;
 
namespace FunWithTriangles
{
    class Triangle
    {
        private double x1, y1, x2, y2, x3, y3,mx,my;//координаты вершин и точки пересечения медиан
        private double s1, s2, s3;//значения длин сторон треугольника
        public Triangle(double X1, double Y1,double X2, double Y2, double X3, double Y3)//конструктор
        {
            if ((Y2 - Y1) / (X2 - X1) != (Y3 - Y1) / (X3 - X1))//можно создать треугольник
            {
                x1 = X1; y1 = Y1; x2 = X2; y2 = Y2; x3 = X3; y3 = Y3;
                s1 = Math.Sqrt(Math.Pow((X2 - X1), 2) + Math.Pow((Y2 - Y1), 2));
                s2 = Math.Sqrt(Math.Pow((X3 - X2), 2) + Math.Pow((Y3 - Y2), 2));
                s3 = Math.Sqrt(Math.Pow((X3 - X1), 2) + Math.Pow((Y3 - Y1), 2));
                mx = (X1 + X2 + X3) / 3;
                my = (Y1 + Y2 + Y3) / 3;
            }
            else//нельзя создать треугольник из данных точек
                throw new Exception("Can not create triangle due to incorrect input data . .");
        }
 
        public double CalculateSqr()//метод - получить полощадь треугольника
        {
            double p = (s1 + s2 + s3) / 2;
            return Math.Sqrt(p * (p - s1) * (p - s2) * (p - s3));
        }
        public double CalculateP()//метод - получить периметр треугольника
        {
            return (s1 + s2 + s3);
        }
        public override string ToString()//переопределяем метод ToString для отображения характеристик 
        {
            return String.Format("Triangle state:\nS: {0:f2}, P: {1:f2}.\nMedians cross each other at point: x: {2:f2} ; y: {3:f2}.\n",
                this.CalculateSqr(), this.CalculateP(), mx,my);
        }
    }
                
         
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Testing the triangles:\n");
            try
            {
                var s = new List<Triangle>(){new Triangle(0,0,0,1,1,0),//создаем треугольники
                    new Triangle(1,3,-1,0,3,0),new Triangle(3,7,-2,-5,10,15)};
                foreach (Triangle t in s)
                    Console.WriteLine(t.ToString());//выводим характеристики треугольников
            }
            catch (Exception e)//обрабатываем исключения
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                Console.WriteLine("Finished ..");
                Console.ReadLine();
            }
        }
    }
}
0
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
09.02.2011, 17:23
Дальше собственно не очень сложно. В классе Vector2 есть метод Cross который вычисляет скалярное произведение, если поделить его на произведение длин векторов, то узнаем косинус, а дальше просто. В коде это выглядит так:

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
public enum TriangleType
{
    Equilateral,
    Isosceles,
    Right,
    Oblique
}
 
public TriangleType Type()
{
    float a1 = Vector2.Cross(A, B) / (A - B).Lenght();
    float a2 = Vector2.Cross(B, C) / (B - C).Lenght();
    float a3 = Vector2.Cross(A, C) / (C - A).Lenght();
    if (Math.Abs(a2 - a1) <= float.Epsilon &&
        Math.Abs(a3 - a2) <= float.Epsilon &&
        Math.Abs(a3 - a1) <= float.Epsilon) return TriangleType.Equilateral;
    else if (Math.Abs(a1) <= float.Epsilon ||
              Math.Abs(a2) <= float.Epsilon ||
              Math.Abs(a3) <= float.Epsilon) return TriangleType.Right;
    else if ((Math.Abs(a2 - a1) <= float.Epsilon &&
               Math.Abs(a3 - a2) <= float.Epsilon) ||
              (Math.Abs(a3 - a2) <= float.Epsilon &&
               Math.Abs(a3 - a1) <= float.Epsilon) ||
              (Math.Abs(a3 - a1) <= float.Epsilon &&
               Math.Abs(a2 - a1) <= float.Epsilon)) return TriangleType.Isosceles;
    else if (a1 < 0f || a2 < 0f || a3 < 0f) return TriangleType.Oblique;
}
Как-то так...
0
 Аватар для Костя Остертаг
35 / 32 / 9
Регистрация: 17.09.2010
Сообщений: 210
09.02.2011, 19:06  [ТС]
Все большое успасибо, отдельно хочу поблагодарить: "Alex Sabaka". . Очень пригодились твои коды. Не все конечно но частички я взял. Всем спасибо за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.02.2011, 19:06
Помогаю со студенческими работами здесь

Описать класс, представляющий треугольник
Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и...

Описать класс, представляющий треугольник
Описать класс, представляющий треугольник. Предусмотреть создание объектов, вычисление площади, периметра и точки пересечения медиан....

Описать класс, представляющий треугольник
Задача:/*Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, * перемещения на плоскости, изменения...

Описать класс, представляющий треугольник
Здравствуйте, отыскал программу, но исходников к ней нету...очень нужен этот проект запустить, посмотреть работу. Сам пробовал собрать...

Описать класс, представляющий треугольник
Описать класс, представляющий треугольник. Предусмотреть создание объектов, вычисление площади, периметра и точки пересечения медиан....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru